{- |
Module : Buttplug.Core
Description : Core functionality for clients.
Copyright : (c) James Sully, 2020-2021
License : BSD 3-Clause
Maintainer : sullyj3@gmail.com
Stability : experimental
Portability : untested
An implementation of the Buttplug Intimate Device Control Standard
()
-}
module Buttplug.Core
(
-- * Overview
-- $overview
-- ** Tutorial
-- $tutorial
-- ** Connectors and connections
-- Connector.hs
Connector
, Connection
, runClient
, sendMessages
, receiveMsgs
, sendMessage
, ConnectorException(..)
, WebSocketConnector(..)
-- ** Messages
-- Message.hs
, clientMessageVersion
, Message(..)
, ErrorCode(..)
, Vibrate(..)
, Rotate(..)
, LinearActuate(..)
, RawData(..)
-- ** Devices
-- Device.hs
, MessageAttributes(..)
, Device(..)
, DeviceMessageType(..)
) where
import Buttplug.Core.Message
import Buttplug.Core.Connector
import Buttplug.Core.Device
-- $overview
-- See () for documentation of the Buttplug
-- protocol.
--
-- The basic idea is:
--
-- - The Buttplug protocol is designed to simplify the process of using
-- computers to control sex toys, by abstracting over individual hardware
-- details.
--
-- - A Buttplug server is responsible for connecting to individual devices,
-- and understanding the specific details of operating them. I recommend Intiface-cli-rs, a command line server implementation: ()
--
-- - Applications act as Buttplug clients, speaking a straightforward message
-- format to the server, which abstracts over the individual details of
-- different devices.
-- In this way developers are presented with a simple API for controlling a wide
-- variety of different toys.
--
-- This package contains the core types and functionality for writing clients,
-- including:
--
-- - The 'Message' type, and Aeson instances for serialization and deserialization.
-- The Buttplug message format is documented here: ()
--
-- - The 'Connector' typeclass, which abstracts over different ways of
-- communicating with a Buttplug server. A connector allows the developer to open connections to the Buttplug Server, and send and receive Messages.
--
-- - 'WebSocketConnector', for connecting to a Buttplug server using Websockets.
--
-- As this library is still experimental, please feel free to suggest API improvements!
-- $tutorial
-- See () for a basic tutorial.
--