I split this work off of
DM-23118 (and rebased that so it is just a few commits from this branch).
- FieldInfo classes: these describe each field of a low-level message and handle type-checking, serializing and deserializing the value for that field.
- BaseMessage: the base class for all low-level commands and replies.
- Command and Reply classes, all subclasses of BaseMessage. There is one class per command that the code supports (more to come) and one per type of reply (a complete set).
- ClientServerPair: a class that has a client and a socket. All OperationManager TCP/IP communication (between that and the EUI, HHD and PXI) uses this kind of pair.
- Communicator: a subclass of ClientServerPair that handles serializing and deserializing commands and replies.
- bin/tcs_commander.py: a script to send commands to the OperationManager and report replies. At present this only supports the mirror cover commands, but more commands can trivially be added.
Pull request: https://github.com/lsst-ts/ts_MTMount/pull/2