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
|