VibratorControlProtocol 2.0

From Opendildonics.org

Jump to: navigation, search
[This RFC has not yet been submitted.]

Network Working Group                                       J. Lantin
Request for Comments: nnnn                               1 December 2007
Category: Experimental


                  The Vibrator Control Protocol (VCP)
                            Version 2.0

Status of this Memo

   This memo defines enhancements to an Experimental Protocol for the
   Internet community.  This memo does not specify an Internet standard
   of any kind.  Discussion and suggestions for improvement are requested.
   Distribution of this memo is unlimited.

Abstract

   This document describes enhancements to VCP, a protocol to control
   vibrating devices over a TCP/IP connection as required for ubiquitous
   preversive computing.

1. Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119.[RFC 2119]

2. Introduction

   This memo provides enhancements to the VCP protocol for controlling 
   vibrating devices over IP.  The enhancements allow a VCP server to
   accept commands for multiple devices, for its clients to specify a
   location name to vibrate in addition to a vibrator name, and for 
   clients to discover the type of devices they are able to control.

   This document borrows extensively from the original Version 1.0
   protocol memo by M. Bruestle.

3. VCP Protocol

3.1 Basic Structure



Lantin                                                        [Page 1]


RFC DRAFT                                                  December 2007


   The parties and connections participating in the VCP are shown in the
   following drawing of the original VCP Version 1.0:

               +------+               +------+
   +-------+   |      | VCP Commands/ |      |   +--------+   +-------+
   |       |   | VCP- |    Replies    | VCP- |   |        |   |       |
   |Prevert|<->|      |<------------->|      |<->|Vibrator|<->|Prevert|
   |       |   |Client| IP-connection |Server|   |        |   |       |
   +-------+   |      |               |      |   +--------+   +-------+
               +------+               +------+

   When a prevert wants to control the vibrating device of another
   prevert she or he uses the VCP-client to establish a connection the
   the VCP-server of the desired party.  This VCP-server is connected to
   the device by electrical means, which in turn can be used by the
   second prevert.  VCP-server and the vibrating device can be two
   different entities as shown in the drawing or can be merged into a
   single entity.

   This memo concentrates on enhancements to the protocol between 
   VCP-client and VCP-server.

3.2 Protocol Overview

   Version 2.0 of the VCP Protocol is fully backwards compatible with 
   previous versions.

   In keeping with Version 1.0 of the VCP Protocol, directly after
   a client connects to the VCP-server the server MUST send the status
   line "220 VCP 1.0".  This is required for backwards compatibility with 
   Version 1.0 since clients implementing that version will expect the
   initial output of the server to be exactly that string.



Lantin                                                        [Page 2]


RFC DRAFT                                                  December 2007


   VCP 2.0 servers can be identified by their response to an "INFO"
   command.

   A VCP 2.0 server is multi-prevert-compliant.  This means that it can
   handle more than one prevert controlling a vibrating device at the
   same time, or multiple preverts controlling separate devices at the
   same time.

   The suggested TCP ports for VCP 2.0 remain unchanged from Version
   1.0 at 6900 and 6906 for SSL-secured transmission.

3.3 Commands

   VCP 2.0 supports all commands documented in the 1.0 specification.

   Commands that are optional in VCP 1.0 are optional in the new
   version.  Required 1.0 commands are required in 2.0 as well.

   This section describes new commands and existing commands that 
   behave differently in the new version.

3.3.1 INFO

   Format: INFO

   Description: This command is used to request information about the
   user and hardware attached to the VCP-server.  The response is
   intended to be machine readable.  This command is REQUIRED.

   Response: The information data is started by a 211-message followed
   by information lines and terminated with a 250.

   In addition to all the data returned in Version 1.0, the following
   data may also be returned:

   VCPV "<version>"
      This status line returns the maximum version of the VCP protocol



Lantin                                                        [Page 3]


RFC DRAFT                                                  December 2007


      that the server supports.  For VCP Version 2.0 servers, the
      version value will be "2.0".  This data line is REQUIRED.

   DFLT "<VibratorID>"
      This specifies the VibratorID of the Default Vibrator.  This
      is the device that will be triggered if a Version 1.0 "VIBR"
      command is received.  This data line is REQUIRED.

   LOCS "<LocationID>"[, "<LocationID>"[...]]
      Specifies the comma-separated list of LocationIDs that can be
      driven by a "VLOC" command.  This list MAY contain more locations 
      than are specified by "VLOC" data lines in the INFO response, in
      which case the client expects the server to pick the most
      appropriate Vibrator given the "virtual" location.  See the VLOC
      command.  This data line is OPTIONAL.  When specified, the data
      line MUST contain each of the locations that the server specifies
      in a VLOC data line.

   VDEV "<VibratorID>" <level>
      Specifies the VibratorID of a single device and its current
      level (0-255).  This data line is REQUIRED.  There MUST be
      one VDEV line for each device the server controls.

   VLOC "<LocationID>" <level>
      Specifies the LocationID of a single location and the current
      level (0-255) of the device at that location.  This data line
      is OPTIONAL.  There MUST be one VLOC line for each LocationID
      that maps directly to a VibratorID the server controls.

   VIBR <level>
      In order to maintain backwards compatibility with Version 1.0,
      this data line in the INFO response MUST specify the current
      level (0-255) of the Default Vibrator.

3.3.2 VINF

   Format: VINF "<VibratorID>"

   Description: This requests information about the specified 
   VibratorID.  This command is REQUIRED.

   Response: The vibrator information data is started by a 211-message
   followed by information lines and terminated with a 250.

   VTYP "<VibratorType>"
      Specifies the Type of Vibrator.  This data line is OPTIONAL.

   VLOC "<VibratorID>" "<LocationID>"
      Specifies the LocationID of the Vibrator.  This data line is
      OPTIONAL.

   VDEV "<VibratorID>" <level>
      Specifies the current level of the Vibrator.  This data line
      is REQUIRED.

   DFLT "<VibratorID>"
      Specifies that the VibratorID is the Default Vibrator.  This
      data line MUST be returned in the VINF response data for the
      Default Vibrator.

Lantin                                                        [Page 4]


RFC DRAFT                                                  December 2007


3.3.3 VIBR

   Format: VIBR <level>

   Description: This sets a constant vibrating intensity for the
   Default Vibrator.  The level can be a value between 0 (indicating
   the lowest possible level, which means normally OFF) and 255
   (indicating the highest possible level).  This command is REQUIRED.

   Response: On success a 250 is returned, on error a 451.

3.3.4 RBIV

   Format: RBIV "<VibratorID>" <level>

   Description: This sets a constant vibrating intensity for the
   specified VibratorID.  The level can be a value between 0 (indicating
   the lowest possible level, which means normally OFF) and 255
   (indicating the highest possible level).  This command is REQUIRED.

   Response: On success a 250 is returned, on error a 451.

3.3.5 VLOC

   Format: VLOC "<LocationID>" <level>

   Description: This sets a constant vibrating intensity for the
   Vibrator a the specified LocationID.  The level can be a value between
   0 (indicating the lowest possible level, which means normally OFF) and 255
   (indicating the highest possible level).  This command is OPTIONAL.
  
   The server MUST accept any LocationID that it returns to the client
   in the "LOCS" data line of an INFO command.  For any LocationID
   that is in a "LOCS" data line, by not listed in the "VLOC" data line of
   a server's VINF response, the server MUST perform resolution to 
   determine the appropriate Vibrator to trigger.

   Response: On success a 250 is returned, on error a 451.

3.4 Return Codes

3.4.1 Correct Command Execution

   211 Status
   214 Help
   220 VCP 1.0
   221 Bye
   250 Ok

3.4.2 Error in Command Execution

   401 Unauthorized
   421 Service already in use
   451 Error

3.4.3 Error Parsing Command

   500 Unknown command
   501 Syntax error in parameters
   502 Command not implemented
   504 Parameter not implemented

4. Informative References

   [VCP Version 1.0] Bruestle, M., "The Vibrator Control Protocol (VCP)",
   http://www.mbsks.franken.de/vcp/vcp.txt, 1 April 2003


RFC DRAFT                                                  December 2007


5. Acknowledgements

   - Bruestle, M. for creating the original VCP specification
                  http://www.mbsks.franken.de/vcp/


Lantin                                                        [Page 5]



Personal tools