<commit_before>#+OPTIONS: toc:nil
* Summary
:PROPERTIES:
:EXPORT_FILE_NAME: SUMMARY.md
:END:

#+BEGIN_SRC emacs-lisp :exports results :results value raw replace
(org-build-gitbook-toc)
#+END_SRC

- [[file:README.md#the-buttplug-sex-toy-control-standard][The Buttplug Sex Toy Control Standard]]
  - [[file:README.md#the-need-for-a-sex-toy-control-standard][The Need for a Sex Toy Control Standard]]
  - [[file:README.md#generalized-control][Generalized Control]]
  - [[file:README.md#comparisons-to-existing-software][Comparisons to Existing Software]]
  - [[file:README.md#why-is-it-called-buttplug][Why is it called Buttplug?]]
- [[file:architecture.md#architecture][Architecture]]
  - [[file:architecture.md#implementation-types][Implementation Types]]
    - [[file:architecture.md#libraries][Libraries]]
    - [[file:architecture.md#servers][Servers]]
    - [[file:architecture.md#applications-aka-clients][Applications (aka Clients)]]
  - [[file:architecture.md#protocol][Protocol]]
  - [[file:architecture.md#stages][Stages]]
    - [[file:architecture.md#identification][Identification]]
    - [[file:architecture.md#enumeration][Enumeration]]
    - [[file:architecture.md#consummation][Consummation]]
- [[file:usages.md#usage-examples][Usage Examples]]
  - [[file:usages.md#library-embedded-in-a-video-game][Library Embedded in a Video Game]]
  - [[file:usages.md#web-based-hardware-synced-movie-player][Web Based Hardware Synced Movie Player]]
----
- [[file:messages.md#messages][Messages]]
  - [[file:messages.md#basic-message-structure][Basic Message Structure]]
  - [[file:messages.md#message-flow][Message Flow]]
  - [[file:messages.md#a-note-on-scaling][A Note On Scaling]]
  - [[file:messages.md#json-message-serialization][JSON Message Serialization]]
  - [[file:messages.md#adding-new-messages][Adding New Messages]]
  - [[file:messages.md#message-description-template][Message Description Template]]
- [[file:status.md#status-messages][Status Messages]]
  - [[file:status.md#ok][Ok]]
  - [[file:status.md#error][Error]]
  - [[file:status.md#ping][Ping]]
  - [[file:status.md#request-log][RequestLog]]
  - [[file:status.md#log][Log]]
- [[file:identification.md#identification-messages][Identification Messages]]
  - [[file:identification.md#request-server-info][RequestServerInfo]]
  - [[file:identification.md#server-info][ServerInfo]]
- [[file:enumeration.md#enumeration-messages][Enumeration Messages]]
  - [[file:enumeration.md#start-scanning][StartScanning]]
  - [[file:enumeration.md#stop-scanning][StopScanning]]
  - [[file:enumeration.md#scanning-finished][ScanningFinished]]
  - [[file:enumeration.md#request-device-list][RequestDeviceList]]
  - [[file:enumeration.md#device-list][DeviceList]]
  - [[file:enumeration.md#device-added][DeviceAdded]]
  - [[file:enumeration.md#device-removed][DeviceRemoved]]
  - [[file:enumeration.md#stop-device][StopDevice]]
  - [[file:enumeration.md#stop-all-devices][StopAllDevices]]
- [[file:generic.md#generic-device-messages][Generic Device Messages]]
  - [[file:generic.md#single-motor-vibrate-cmd][SingleMotorVibrateCmd]]
  - [[file:generic.md#raw-cmd][RawCmd]]
- [[file:specific.md#specific-device-messages][Specific Device Messages]]
  - [[file:specific.md#kiiro-cmd][KiiroCmd]]
  - [[file:specific.md#fleshlight-launch-f-w12cmd][FleshlightLaunchFW12Cmd]]
  - [[file:specific.md#lovense-cmd][LovenseCmd]]
- [[file:jsonschema.md#message-json-schema][Message JSON Schema]]

* Introduction
:PROPERTIES:
:EXPORT_FILE_NAME: README.md
:END:
** The Buttplug Sex Toy Control Standard

*Version:* 0.0.1
*Documentation Repo*: [[https://github.com/metafetish/buttplug][https://github.com/metafetish/buttplug]]

Buttplug is a quasi-standard set of technologies and protocols to
allow developers to write software that controls an array of sex toys
in a semi-future-proof way.

*** The Need for a Sex Toy Control Standard

If a user wants to access a computer controlled sex toy in a way not
supported by the original manufacturer, the requirement list to is not
trivial. There are some major hurdles between obtaining a sex toy and
having DIY control of it:
<commit_msg>doc: Fixed TOC<commit_after>#+OPTIONS: toc:nil
* Summary
:PROPERTIES:
:EXPORT_FILE_NAME: SUMMARY.md
:END:

#+BEGIN_SRC emacs-lisp :exports results :results value raw replace
(org-build-gitbook-toc)
#+END_SRC

- [[file:README.md#the-buttplug-sex-toy-control-standard][The Buttplug Sex Toy Control Standard]]
  - [[file:README.md#the-need-for-a-sex-toy-control-standard][The Need for a Sex Toy Control Standard]]
  - [[file:README.md#generalized-control][Generalized Control]]
  - [[file:README.md#comparisons-to-existing-software][Comparisons to Existing Software]]
  - [[file:README.md#why-is-it-called-buttplug][Why is it called Buttplug?]]
- [[file:architecture.md#architecture][Architecture]]
  - [[file:architecture.md#implementation-types][Implementation Types]]
    - [[file:architecture.md#libraries][Libraries]]
    - [[file:architecture.md#servers][Servers]]
    - [[file:architecture.md#applications-aka-clients][Applications (aka Clients)]]
  - [[file:architecture.md#protocol][Protocol]]
  - [[file:architecture.md#stages][Stages]]
    - [[file:architecture.md#identification][Identification]]
    - [[file:architecture.md#enumeration][Enumeration]]
    - [[file:architecture.md#consummation][Consummation]]
- [[file:usages.md#usage-examples][Usage Examples]]
  - [[file:usages.md#library-embedded-in-a-video-game][Library Embedded in a Video Game]]
  - [[file:usages.md#web-based-hardware-synced-movie-player][Web Based Hardware Synced Movie Player]]
----
- [[file:messages.md#messages][Messages]]
  - [[file:messages.md#basic-message-structure][Basic Message Structure]]
  - [[file:messages.md#message-flow][Message Flow]]
  - [[file:messages.md#a-note-on-scaling][A Note On Scaling]]
  - [[file:messages.md#json-message-serialization][JSON Message Serialization]]
  - [[file:messages.md#adding-new-messages][Adding New Messages]]
  - [[file:messages.md#message-description-template][Message Description Template]]
- [[file:status.md#status-messages][Status Messages]]
  - [[file:status.md#ok][Ok]]
  - [[file:status.md#error][Error]]
  - [[file:status.md#ping][Ping]]
  - [[file:status.md#request-log][RequestLog]]
  - [[file:status.md#log][Log]]
- [[file:identification.md#identification-messages][Identification Messages]]
  - [[file:identification.md#request-server-info][RequestServerInfo]]
  - [[file:identification.md#server-info][ServerInfo]]
- [[file:enumeration.md#enumeration-messages][Enumeration Messages]]
  - [[file:enumeration.md#start-scanning][StartScanning]]
  - [[file:enumeration.md#stop-scanning][StopScanning]]
  - [[file:enumeration.md#scanning-finished][ScanningFinished]]
  - [[file:enumeration.md#request-device-list][RequestDeviceList]]
  - [[file:enumeration.md#device-list][DeviceList]]
  - [[file:enumeration.md#device-added][DeviceAdded]]
  - [[file:enumeration.md#device-removed][DeviceRemoved]]
- [[file:generic.md#generic-device-messages][Generic Device Messages]]
  - [[file:generic.md#stop-device-cmd][StopDeviceCmd]]
  - [[file:generic.md#stop-all-devices][StopAllDevices]]
  - [[file:generic.md#single-motor-vibrate-cmd][SingleMotorVibrateCmd]]
  - [[file:generic.md#raw-cmd][RawCmd]]
- [[file:specific.md#specific-device-messages][Specific Device Messages]]
  - [[file:specific.md#kiiro-cmd][KiiroCmd]]
  - [[file:specific.md#fleshlight-launch-f-w12cmd][FleshlightLaunchFW12Cmd]]
  - [[file:specific.md#lovense-cmd][LovenseCmd]]
----
- [[file:jsonschema.md#message-json-schema][Message JSON Schema]]

* Introduction
:PROPERTIES:
:EXPORT_FILE_NAME: README.md
:END:
** The Buttplug Sex Toy Control Standard

*Version:* 0.0.1
*Documentation Repo*: [[https://github.com/metafetish/buttplug][https://github.com/metafetish/buttplug]]

Buttplug is a quasi-standard set of technologies and protocols to
allow developers to write software that controls an array of sex toys
in a semi-future-proof way.

*** The Need for a Sex Toy Control Standard

If a user wants to access a computer controlled sex toy in a way not
supported by the original manufacturer, the requirement list to is not
trivial. There are some major hurdles between obtaining a sex toy and
having DIY control of it:

{'fraction_non_alphanumeric': 0.16527323397552404, 'fraction_numerical': 0.0016963528413910093, 'mean_word_length': 5.977176669484362, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2356243', 'n_tokens_mistral': 2793, 'n_tokens_neox': 2693, 'n_words': 436}