City proxy protocol

  This document describes and defines the protocol implemented by the EQUATOR City proxy (known as equip_input_Cliff, although a change to this name has been suggested). This protocol is used by PDA and applet clients to send and/or receive (GPS or ultrasonic) position, location, orientation and identification information to and from EQUIP.

Overview

This protocol was developed and implemented at the UCL workshop during June 2001 to pass position information from a PDA client (vee) to EQUIP, with a reply passing an avatar position (ana) from EQUIP to the PDA client. The aim was to support mutual spatial awareness by physical and VR visitors.

The protocol was extended at the Glasgow workshop during August 2001 to incorporate GPS positioning, pinger-based locations, content-refresh and multi-visitor replies. It is also used by a Java applet client (dub) to extend shared spatial awareness to WWW visitors.

The protocol is defined as a number of fixed-length strings that begin with an identifying marker and end with a semi-colon (;). The identifying marker is a dollar sign ($) followed by an upper-case alphabetic character. The components of a string are comma-separated (,). Numeric components are zero-padded, and string components are space-padded.

The following conventions are used in this document to define components:

A
alphabetic character
0 (zero)
numeric character
X
alpha-numeric character
S
symbolic character (unary minus and unary plus)
$ , ;
literal dollar sign, comma and semi-colon

The following conventions are used in this document to define values taken by string components:

[ ]
class for selection of a single character
-
range of numeric or alphabetic values
X3
superscript indicating repetitions

Note that the hyphen character (-) is overloaded, defining both unary minus (for $P and $V x-y-z offsets) and value ranges (all other instances).

The remainder of this document defines the strings as follows:

Currently, all communication is done via a socket opened on a pre-defined port, with the proxy initially listening on the port. Each client requires a unique port, but a mechanism for dynamically assigning ports has been proposed.

A client communicating with the proxy sends an arbitrary sequence of $C, $G, $L, $P and $U strings. Each string is terminated by a carriage return character. Each time a $U string is sent by a client to the proxy, the proxy replies with a combination of $V, $R and $S strings. The entire reply (rather than each string in the reply) is terminated by a carriage return character, after which the client resumes sending strings.

Some future expansions of this document could include

  • adding ASCII (or UNICODE) codes for literals
  • marking carriage return terminator, for example by ¬
  • providing examples of valid message sequences
  • split value columns into min/max/class/repetition

Client to proxy

The client sends an arbitrary sequence of $C, $G, $L, $P and $U strings to the proxy, with each string terminated by a carriage return character. The $U string is an implicit request for the proxy to send a reply to the client.

$C compass heading

The compass heading string is comprised of a distinguished marker ($C), a single component and a semi-colon terminator. The component represents the compass heading (degrees).

$C000;

The details of the components are as follows.

item description values
000 compass heading degrees 000-359

$G GPS position

The GPS position string is comprised of a distinguished marker ($G), six comma-separated components and a semi-colon terminator. The first three components represent latitude (degrees, minutes and direction) and the second three components represent longitude (degrees, minutes and direction).

$G00,00.000,A,000,00.000,A;

The details of the components are as follows.

item description values
00 latitude degrees 00-90
00.000 latitude minutes 00.000-59.999
A latitude direction [NS]
000 longitude degrees 000-180
00.000 longitude minutes 00.000-59.999
A longitude direction [EW]

Note that the maximum value for latitude is 90° 00.000' rather than 90° 59.999' and, similarly, the maximum value for longitude 180° 00.000'.

For conversion purposes, the Mackintosh Room is assumed to be at 55° 51.586' N 4° 15.186' W and the reference point for ultrasonic positioning is at 55° 51.593' N 4° 15.353' W. For converting lat-long to metres, 1' of latitude is a nautical mile, which is 1.15 Imperial miles, which is 1852 metres, and 1' of longitude is 1852 metres * cos(latitude) which is about 1062 metres. These values were taken from the proxy code and should be checked for accuracy.

$L location

The location string is comprised of a distinguished marker ($L), a single component and a semi-colon separator. The component defines a location name (typically an RF pinger identification string).

$LXXXXXX;

The details of the components are as follows.

item description values
XXXXXX location name [a-zA-Z0-9]6

$P ultrasonic position

The ultrasonic position string is comprised of a distinguished marker ($P), three components defining x-y-z offsets from a pre-defined reference point, an accuracy component and a semi-colon terminator.

$PS00.00,S00.00,S00.00,00.00;

The details of the components are as follows.

item description values
S00.00 x-offset metres -99.99-+99.99
S00.00 y-offset metres -99.99-+99.99
S00.00 y-offset metres -99.99-+99.99
00.00 accuracy metres 00.00-99.99

In the Mackintosh Room, the reference point is the centre of the Derngate display area. The x-offset is aligned with the long axis of the room which is at approximately 285°. The maximum offset of 100m from the reference point is based on the range of Bristol RF pingers. It it understood that the reference point in GPS coordinates (lat-long) is 55° 52.593' N 4° 15.353' W.

$U user and timestamp

The user string is comprised of a distinguished marker ($U), a component for the user name, a component for a timestamp, and a semi-colon terminator.

$UAAA,000000;

The details of the components are as follows.

item description values
AAA user name [a-zA-Z]3
000000 timestamp HHMMSS 00-23 00-59 00-59

The $U string sent by the client to the proxy identifies the human user of the client.

Proxy to client

The proxy responds to $U strings from clients by sending a reply comprised of an arbitrary ordering of $V strings (one for each other visitor in the space, possibly none), an optional $R string (indicating availability of fresh content) and a $S string (redundant).

$R refresh

The refresh string is comprised of a distinguished marker ($R) and a semi-colon terminator. It signifies that new content is available at a previously agreed URL (typically containing a client identification comprised of at least a user name and possibly a device name).

$R;

$S stop

The stop string is comprised of a distinguished marker ($S) and a semi-colon terminator. It is intended to signify the end of a reply from the proxy to the client, given the variable number of user reply strings (possibly none) and the possible absence of a refresh string.

$S;

Note that this string is redundant given the carriage return terminating proxy responses to clients. Clients should probably not rely on this string being sent.

$V visitor

The visitor (reply) string is comprised of a distinguished marker ($V), a name component, three components defining x-y-z offsets from a pre-defined reference point and a semi-colon terminator.

$VAAA,S00.00,S00.00,S00.00,000;

The details of the components are as follows.

item description values
AAA name [a-zA-Z]3
S00.00 x-offset -99.99-+99.99
S00.00 y-offset -99.99-+99.99
S00.00 y-offset -99.99-+99.99
000 orientation degrees 000-360

The $V strings sent by the proxy to the client identify the names and locations of other visitors to the same space as the client.
 

Ian MacColl
ianm@dcs.gla.ac.uk
27 September 2001