Introduction

This document gives details of the network protocol used to control the motions of the 6.5 meter MMT telescope.

Motions of the telescope are controlled by a computer and associated hardware referred to as the "mount computer".

A number of different protocols control various aspects of the mount computer. This document describes only one of these, which provides all services which are exported to individuals outside the MMT organization. Additional protocols exist for purposes such as system maintentance and servo tuning, as well as experimental and developmental purposes, and these are not described here.

This protocol is implemented as a server running within the mount computer which makes itself available on TCP port 5240. All communication is in plain ascii text, so that it would be possible, although somewhat awkward to access the protocol via telnet.

Older versions of the protocol were not multithreaded and so required clients to make a connection, quickly send a command, and close the connection so that the single socket could be shared. The current server is multithreaded and has no such limitation. However, there is a limit on the number of connections that can be supported and a single client should make only a single connection to the mount. There is also a definite limit on total packet throughput, and any attempt to send commands to the server at rates significantly faster than one per second will cause serious trouble.

An introduction to the commands

There are 3 categories of commands: those that set parameters (informative), those that get parameters (inquisitive), and those that command actions (imperative).

All commands will get some kind of response from the server. Those that inquire about values will get a list of values separated by newlines (i.e. one value per line), ending with the string ".EOF" on the final line. Imperative commands, and those commands that set values will receive an acknowlegement as the string "OK" or perhaps "ERR".

Certain commands with potential of causing hazard to the telescope are marked as "reserved", and are not available even though they are documented as part of this protocol (this protocol is used internally, but is also offered to outside users as well).

Interogative commands return a list of values, one per line, with each line containing a tag word followed by the value associated with the tag. (If this is not clear, look at the examples below). The intention here is that applications can be written that do not depend on the order in which values are returned (although the order is in fact deterministic). More importantly, applications can be written that do not depend on how many values are returned.