Until I get a chance to write up things better, here's a list of issues that we talked about at the last meeting:

Streaming (forces, wave vars) versus distributed (geometry)

UDP/stateless implications

OutOfBand signalling- separate channel for stateful info?

multicasting

streaming video

conformance classes

protocol levels

implementation details: port #, packet lengths, timeouts

teleoperation support (symmetry)

upshift/downshift of protocol classes

initial handshaking/security

hardware id passed on handshake

multiple grippers

who connects to who? (connection initiation)

code sharing

Protocol classes

Here is information on the networking protocol for each of the protocol classes.

Initial Parameters/Handshaking:
For every protocol class, we are using TCP/IP port 9999 and sending 300 byte packets.

After connecting, the simulator side sends "haptic vX.Y", where X and Y denote the major and minor version numbers of the protocol class. If the hapticserver running on the machine supports that protocol class, it will respond with "ACK", otherwise "NAK". If "ACK"-nowledged, then the server will go into the protocol specified below.

At any time, to signal the end of the session, the simulator can send the line "quit", at which time the hapticserver will reset and await the next connection.

Class 1: Streaming Forces (version: 1.0)In this protocol class, the hapticserver is sending position and orientation information to the simulator as:

"px py pz m00 m01 m02 m10 m11 m12 m20 m21 m22 a"

Where (px,py,pz) are the x,y,z position of the device, m[][] are the elements of the rotation matrix, and a denotes whether the tool is active (button pressed, etc). Note that the hapticserver will only send this information if it has changed from the last time it was sent.

The simulator sends a force vector back to the hapticserver as:

"fx fy fz"

Where (fx,fy,fz) denotes the force vector in x,y,z. Note that the hapticserver may limit the maximum amount of force for safety reasons. This is a good thing.

Class 2: Streaming Wave Variables (version: 2.0)
(Gunter- do you have some input for here?)

Class 3: Caching Local Region Geometry (version: 3.0)
(Benjamin is currently working here)