// SAL_VERSION=4.1.2 XML_VERSION=5.1.0
module ATMCS {
struct azEl_mountMotorEncoders_2652f997 {  // @Metadata=(Description="Position reported by elevation and azimuth mount encoders")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	elevationEncoder[100]; // @Metadata=(Units="deg",Description="Position reported by elevation drive motor encoder at 100 Hz beginning at the specified time; converted to deg.")
	  double	azimuth1Encoder[100]; // @Metadata=(Units="deg",Description="Position reported by azimuth drive 1 motor encoder at 100 Hz beginning at the specified time; converted to deg.")
	  double	azimuth2Encoder[100]; // @Metadata=(Units="deg",Description="Position reported by azimuth drive 2 motor encoder at 100 Hz beginning at the specified time; converted to deg.")
	  long	elevationEncoderRaw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by elevation drive motor encoder at 100 Hz beginning at the specified time.")
	  long	azimuth1EncoderRaw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by azimuth drive 1 drive motor encoder at 100 Hz beginning at the specified time.")
	  long	azimuth2EncoderRaw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by azimuth drive 2 drive motor encoder at 100 Hz beginning at the specified time.")
	};
#pragma keylist azEl_mountMotorEncoders_2652f997 
struct command_abort_927558bf {  // @Metadata=(Description="")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="unitless",Description="Not used")
	};
#pragma keylist command_abort_927558bf 
struct command_disable_b418de3e {  // @Metadata=(Description="Transition from state Enabled to Disabled.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="unitless",Description="Not used")
	};
#pragma keylist command_disable_b418de3e 
struct command_enable_440e66d0 {  // @Metadata=(Description="Transition from state Disabled to Enabled.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="unitless",Description="Not used")
	};
#pragma keylist command_enable_440e66d0 
struct command_enterControl_ae7cf203 {  // @Metadata=(Description="Transition from state Offline to Standby. Only "externally commandable" CSCs support this command; other CSCs start in Standby state and quit when they go to Offline.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="unitless",Description="Not used")
	};
#pragma keylist command_enterControl_ae7cf203 
struct command_exitControl_95d70cf2 {  // @Metadata=(Description="Transition from state Standby to Offline. For CSCs that are not "externally commandable" this makes the CSC quit.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="unitless",Description="Not used")
	};
#pragma keylist command_exitControl_95d70cf2 
struct command_setInstrumentPort_99c6cc03 {  // @Metadata=(Description="Rotate M3 to a specified instrument port.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	port; // @Metadata=(Units="dimensionless",Description="Desired instrument port.")
	};
#pragma keylist command_setInstrumentPort_99c6cc03 
struct command_setLogLevel_27b549c1 {  // @Metadata=(Description="Set the logging level.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	level; // @Metadata=(Units="unitless",Description="Logging level; as a Python logging level: error=40; warning=30; info=20; debug=10.")
	};
#pragma keylist command_setLogLevel_27b549c1 
struct command_setSimulationMode_5dd5304e {  // @Metadata=(Description="Set the simulation mode.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	mode; // @Metadata=(Units="unitless",Description="Desired simulation mode; 0 for normal operation (no simulation); other supported values are specific to each CSC.")
	};
#pragma keylist command_setSimulationMode_5dd5304e 
struct command_setValue_ee119fc3 {  // @Metadata=(Description="")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  string<256>	parametersAndValues; // @Metadata=(Units="unitless",Description="List of parameters and their values as a Json string")
	};
#pragma keylist command_setValue_ee119fc3 
struct command_standby_a1326918 {  // @Metadata=(Description="Transition from state Offline; Disabled or Fault to Standby.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="unitless",Description="Not used")
	};
#pragma keylist command_standby_a1326918 
struct command_start_0e5f8988 {  // @Metadata=(Description="Transition from state Standby to Disable; in a specified configuration.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  string<256>	settingsToApply; // @Metadata=(Units="unitless",Description="Name of the selected settings set")
	};
#pragma keylist command_start_0e5f8988 
struct command_startTracking_5d0ee441 {  // @Metadata=(Description="Enable tracking. Once you issue this command you must call trackTarget at regular intervals until you are done tracking; at which point call stopTracking.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="dimensionless",Description="Attribute required by the SAL API; but is unused.")
	};
#pragma keylist command_startTracking_5d0ee441 
struct command_stopTracking_cfd3d9ea {  // @Metadata=(Description="Halt all axes except M3 rotation; and disable tracking.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	value; // @Metadata=(Units="dimensionless",Description="Attribute required by the SAL API; but is unused.")
	};
#pragma keylist command_stopTracking_cfd3d9ea 
struct command_trackTarget_eebc3ba3 {  // @Metadata=(Description="Specify position; velocity and time (PVT) vector for all axes except M3. This command is immediately reported as done.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	azimuth; // @Metadata=(Units="deg",Description="Mount azimuth angle at the specified time. The allowed range is the software limits (L1); approximately -270 to 270.")
	  double	azimuthVelocity; // @Metadata=(Units="deg/second",Description="Mount azimuth velocity at the specified time.")
	  double	elevation; // @Metadata=(Units="deg",Description="Mount elevation angle at the specified time.")
	  double	elevationVelocity; // @Metadata=(Units="deg/second",Description="Mount elevation angle velocity at the specified time.")
	  double	nasmyth1RotatorAngle; // @Metadata=(Units="deg",Description="Nasmyth 1 rotator angle at the specified time. The allowed range is the software limits (L1); approximately -170 to 170. Outside this range the velocity will be severly limited. Software position limits are -175 to 175. ")
	  double	nasmyth1RotatorAngleVelocity; // @Metadata=(Units="deg/second",Description="Nasmyth 1 rotator angle velocity at the specified time.")
	  double	nasmyth2RotatorAngle; // @Metadata=(Units="deg",Description="Nasmyth 1 rotator angle at the specified time. The allowed range is the software limits (L1); approximately -170 to 170. Outside this range the velocity will be severly limited. Software position limits are -175 to 175. ")
	  double	nasmyth2RotatorAngleVelocity; // @Metadata=(Units="deg/second",Description="Nasmyth 1 rotator angle velocity at the specified time.")
	  double	taiTime; // @Metadata=(Units="second",Description="TAI date at which the commanded positions and velocities apply; as unix time.")
	  long	trackId; // @Metadata=(Units="dimensionless",Description="Target identifier provided by the ATMCS.")
	  string<256>	tracksys; // @Metadata=(Units="dimensionless",Description="Defines tracking coordinate system as sidereal; non-sidereal or local.")
	  string<256>	radesys; // @Metadata=(Units="dimensionless",Description="Coordinate reference frame of RA/DEC axes. This originates from the pointing component and is used for WCS definition (e.g. FK5 or ICRS).")
	};
#pragma keylist command_trackTarget_eebc3ba3 
struct logevent_allAxesInPosition_65585257 {  // @Metadata=(Description="True if all axes are in position")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	inPosition; // @Metadata=(Units="dimensionless",Description="True if all axes are in position")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_allAxesInPosition_65585257 
struct logevent_appliedSettingsMatchStart_a3f11c54 {  // @Metadata=(Description="")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	appliedSettingsMatchStartIsTrue; // @Metadata=(Units="unitless",Description="True when the configuration matches the start conditions")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_appliedSettingsMatchStart_a3f11c54 
struct logevent_atMountState_9b819c2d {  // @Metadata=(Description="State of tracking")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	state; // @Metadata=(Units="dimensionless",Description="Describes if tracking is stopped/started or in the process of stopping")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_atMountState_9b819c2d 
struct logevent_azimuthBrake1_6f69545f {  // @Metadata=(Description="State of azimuth drive 1 brake")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	engaged; // @Metadata=(Units="dimensionless",Description="True if the azimuth drive 1 brake is engaged")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthBrake1_6f69545f 
struct logevent_azimuthBrake2_e916fd2c {  // @Metadata=(Description="State of azimuth drive 2 brake")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	engaged; // @Metadata=(Units="dimensionless",Description="True if the azimuth drive 2 brake is engaged")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthBrake2_e916fd2c 
struct logevent_azimuthDrive1Status_b6483fd6 {  // @Metadata=(Description="True if azimuth drive 1 is enabled")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	enable; // @Metadata=(Units="dimensionless",Description="True; if state of elevation drive is set to enabled")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthDrive1Status_b6483fd6 
struct logevent_azimuthDrive2Status_28c313c8 {  // @Metadata=(Description="True if azimuth drive 2 enabled")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	enable; // @Metadata=(Units="dimensionless",Description="True; if the state of the azimuth drive is enabled")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthDrive2Status_28c313c8 
struct logevent_azimuthInPosition_de28be25 {  // @Metadata=(Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	inPosition; // @Metadata=(Units="dimensionless",Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files. ")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthInPosition_de28be25 
struct logevent_azimuthLimitSwitchCCW_70a032f5 {  // @Metadata=(Description="State of azimuth counter-clockwise limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if telescope azimuth axis is at the CCW L2 limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthLimitSwitchCCW_70a032f5 
struct logevent_azimuthLimitSwitchCW_167b0a33 {  // @Metadata=(Description="State of azimuth clockwise limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if telescope azimuth axis is at the CW L2 limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthLimitSwitchCW_167b0a33 
struct logevent_azimuthToppleBlockCCW_2c1dab17 {  // @Metadata=(Description="True if the azimuth topple block counter-clockwise switch depressed")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if switch depressed")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthToppleBlockCCW_2c1dab17 
struct logevent_azimuthToppleBlockCW_913a001e {  // @Metadata=(Description="True if the azimuth topple block clockwise switch depressed")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if switch depressed")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_azimuthToppleBlockCW_913a001e 
struct logevent_detailedState_5b38b9e3 {  // @Metadata=(Description="The substate or extra states of the CSC.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	detailedState; // @Metadata=(Units="dimensionless",Description="The substate or extra states of the CSC ")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_detailedState_5b38b9e3 
	 const long ATMCS_shared_AtMountState_TrackingDisabled=1;
	 const long ATMCS_shared_AtMountState_TrackingEnabled=2;
	 const long ATMCS_shared_AtMountState_Stopping=3;
	 const long ATMCS_shared_M3ExitPort_Nasmyth1=1;
	 const long ATMCS_shared_M3ExitPort_Nasmyth2=2;
	 const long ATMCS_shared_M3ExitPort_Port3=3;
	 const long ATMCS_shared_M3State_Nasmyth1=1;
	 const long ATMCS_shared_M3State_Nasmyth2=2;
	 const long ATMCS_shared_M3State_Port3=3;
	 const long ATMCS_shared_M3State_InMotion=4;
	 const long ATMCS_shared_M3State_UnknownPosition=5;
	 const long ATMCS_shared_AzimuthDirection_ClockWise=1;
	 const long ATMCS_shared_AzimuthDirection_CounterClockWise=2;
	 const long ATMCS_shared_DetailedState_DisabledState=1;
	 const long ATMCS_shared_DetailedState_EnabledState=2;
	 const long ATMCS_shared_DetailedState_FaultState=3;
	 const long ATMCS_shared_DetailedState_OfflineState=4;
	 const long ATMCS_shared_DetailedState_StandbyState=5;
	 const long ATMCS_shared_DetailedState_RemoteControlState=6;
	 const long ATMCS_shared_DetailedState_HandPaddleControlState=7;
struct logevent_elevationBrake_a370ad07 {  // @Metadata=(Description="State of elevation brake")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	engaged; // @Metadata=(Units="dimensionless",Description="True if the Elevation Drive Brake is engaged")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_elevationBrake_a370ad07 
struct logevent_elevationDriveStatus_3c0a7a04 {  // @Metadata=(Description="True if the elevation drive enabled")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	enable; // @Metadata=(Units="dimensionless",Description="True; if state of elevation drive is set to enabled")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_elevationDriveStatus_3c0a7a04 
struct logevent_elevationInPosition_e8ca0839 {  // @Metadata=(Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	inPosition; // @Metadata=(Units="dimensionless",Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_elevationInPosition_e8ca0839 
struct logevent_elevationLimitSwitchLower_4e77f45e {  // @Metadata=(Description="State of elevation lower limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if telescope elevation axis is at the lower (horizon) L2 limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_elevationLimitSwitchLower_4e77f45e 
struct logevent_elevationLimitSwitchUpper_cdbd0e64 {  // @Metadata=(Description="State of elevation upper limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if telescope elevation axis is at the upper (zenith) L2 limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_elevationLimitSwitchUpper_cdbd0e64 
struct logevent_errorCode_9d8bf6c9 {  // @Metadata=(Description="Output when a CSC goes into the Fault state as an explanation of the problem.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	errorCode; // @Metadata=(Units="unitless",Description="A numeric error code")
	  string	errorReport; // @Metadata=(Units="unitless",Description="An string providing detailed information about the error")
	  string	traceback; // @Metadata=(Units="unitless",Description="An optional stack trace of the error condition")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_errorCode_9d8bf6c9 
struct logevent_heartbeat_1ba6f555 {  // @Metadata=(Description="")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	heartbeat; // @Metadata=(Units="unitless",Description="Beats the drum.")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_heartbeat_1ba6f555 
struct logevent_logLevel_b541797d {  // @Metadata=(Description="Current logging level.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	level; // @Metadata=(Units="unitless",Description="Current logging level; a Python logging level: error=40; warning=30; info=20; debug=10.")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_logLevel_b541797d 
struct logevent_logMessage_bb0b4f91 {  // @Metadata=(Description="A log message.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  string	name; // @Metadata=(Units="unitless",Description="Log name.")
	  long	level; // @Metadata=(Units="unitless",Description="Message level; a Python logging level: error=40; warning=30; info=20; debug=10.")
	  string	message; // @Metadata=(Units="unitless",Description="Log message.")
	  string	traceback; // @Metadata=(Units="unitless",Description="Exception traceback; "" if not an exception.")
	  string	filePath; // @Metadata=(Units="unitless",Description="Path to source file.")
	  string	functionName; // @Metadata=(Units="unitless",Description="Function or method name.")
	  long	lineNumber; // @Metadata=(Units="unitless",Description="Line number in the file specified by filePath.")
	  long	process; // @Metadata=(Units="unitless",Description="Process ID.")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_logMessage_bb0b4f91 
struct logevent_m3DriveStatus_550bde75 {  // @Metadata=(Description="True if the M3 rotator drive is enabled")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	enable; // @Metadata=(Units="dimensionless",Description="True if the M3 rotator drive is enabled")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3DriveStatus_550bde75 
struct logevent_m3InPosition_3cb15ffc {  // @Metadata=(Description="True if the M3 rotator is where setInstrumentPort commanded it to go. Note that when the CSC starts up this is false.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	inPosition; // @Metadata=(Units="dimensionless",Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files. ")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3InPosition_3cb15ffc 
struct logevent_m3PortSelected_1ed8ae55 {  // @Metadata=(Description="The port commanded by setInstrumentPort.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	selected; // @Metadata=(Units="dimensionless",Description="The port that is to receive light from the system; or if stage is in motion")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3PortSelected_1ed8ae55 
struct logevent_m3RotatorDetentSwitches_aa2cbe55 {  // @Metadata=(Description="M3 rotator detent switches")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	nasmyth1Active; // @Metadata=(Units="dimensionless",Description="True if M3 is directing light to Nasmyth 1")
	  boolean	port3Active; // @Metadata=(Units="dimensionless",Description="True if M3 is directing light to the auxiliary port with no rotator.")
	  boolean	nasmyth2Active; // @Metadata=(Units="dimensionless",Description="True if M3 is directing light to Nasmyth 2")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3RotatorDetentSwitches_aa2cbe55 
struct logevent_m3RotatorLimitSwitchCCW_a162dae9 {  // @Metadata=(Description="State of counter-clockwise M3 limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if M3 rotator is at the CCW (L2) limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3RotatorLimitSwitchCCW_a162dae9 
struct logevent_m3RotatorLimitSwitchCW_3d239015 {  // @Metadata=(Description="State of clockwise M3 limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if M3 Rotator is at the CW (L2) limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3RotatorLimitSwitchCW_3d239015 
struct logevent_m3State_ef3ad631 {  // @Metadata=(Description="State of M3 rotator.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	state; // @Metadata=(Units="dimensionless",Description="M3 rotator position/motion state")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_m3State_ef3ad631 
struct logevent_nasmyth1Brake_fe591d75 {  // @Metadata=(Description="State of Nasmyth 1 brake")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	engaged; // @Metadata=(Units="dimensionless",Description="True if the Nasmyth1 drive brake is engaged")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth1Brake_fe591d75 
struct logevent_nasmyth1DriveStatus_b6fae0db {  // @Metadata=(Description="True if the Nasmyth 1 rotator drive is enabled")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	enable; // @Metadata=(Units="dimensionless",Description="True if the state of the Nasmyth 1 rotator is enabled")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth1DriveStatus_b6fae0db 
struct logevent_nasmyth1LimitSwitchCCW_c4fc6b0d {  // @Metadata=(Description="State of counter-clockwise Nasmyth 1 limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if Nasmyth 1 is at the CCW limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth1LimitSwitchCCW_c4fc6b0d 
struct logevent_nasmyth1LimitSwitchCW_e6c60b0b {  // @Metadata=(Description="State of clockwise Nasmyth 1 limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if Nasmyth 1 is at CW (L2) limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth1LimitSwitchCW_e6c60b0b 
struct logevent_nasmyth1RotatorInPosition_8a95193e {  // @Metadata=(Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	inPosition; // @Metadata=(Units="dimensionless",Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files. ")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth1RotatorInPosition_8a95193e 
struct logevent_nasmyth2Brake_8b622b87 {  // @Metadata=(Description="State of Nasmyth 2 brake")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	engaged; // @Metadata=(Units="dimensionless",Description="True if the Nasmyth drive 2 brake is engaged")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth2Brake_8b622b87 
struct logevent_nasmyth2DriveStatus_0caaa6fd {  // @Metadata=(Description="True if the Nasmyth 2 rotator drive is enabled")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	enable; // @Metadata=(Units="dimensionless",Description="True if the Nasmyth 2 rotator is enabled")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth2DriveStatus_0caaa6fd 
struct logevent_nasmyth2LimitSwitchCCW_9f6a0c4d {  // @Metadata=(Description="State of counter-clockwise Nasmyth 2 limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True if Nasmyth 2 is at CCW (L2) limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth2LimitSwitchCCW_9f6a0c4d 
struct logevent_nasmyth2LimitSwitchCW_42e3b905 {  // @Metadata=(Description="State of clockwise Nasmyth 2 limit switch")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	active; // @Metadata=(Units="dimensionless",Description="True is Nasmyth 2 is at the CW (L2) limit")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth2LimitSwitchCW_42e3b905 
struct logevent_nasmyth2RotatorInPosition_879c9c09 {  // @Metadata=(Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  boolean	inPosition; // @Metadata=(Units="dimensionless",Description="True when the actual and commanded position are within an epsilon defined in the ATMCS configuration files. ")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_nasmyth2RotatorInPosition_879c9c09 
struct logevent_positionLimits_5a65d181 {  // @Metadata=(Description="L1 (software) position limits; in order elevation; azimuth; Nasmyth 1; Nasmyth 2 and M3.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  float	minimum[5]; // @Metadata=(Units="deg",Description="Minimum position limits.")
	  float	maximum[5]; // @Metadata=(Units="deg",Description="Maximum position limits.")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_positionLimits_5a65d181 
struct logevent_settingVersions_586b1777 {  // @Metadata=(Description="Information about settings which can be specified in the start command.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  string	recommendedSettingsVersion; // @Metadata=(Units="unitless",Description="List of comma seperated recomended versions of settings sets")
	  string	recommendedSettingsLabels; // @Metadata=(Units="unitless",Description="List of comma seperated names of settings sets")
	  string	settingsUrl; // @Metadata=(Units="unitless",Description="The URL where the settings sets definitions can be found")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_settingVersions_586b1777 
struct logevent_settingsApplied_1b3abb16 {  // @Metadata=(Description="Base settings applied.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  string<256>	settingsVersion; // @Metadata=(Units="unitless",Description="The SHA or name corresponding to the published configuration")
	  string	otherSettingsEvents; // @Metadata=(Units="unitless",Description="A comma delimited list of other specific CSC configuration events. This may be blank if no other CSC specific events are necessary")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_settingsApplied_1b3abb16 
struct logevent_simulationMode_694167eb {  // @Metadata=(Description="Current simulation mode.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	mode; // @Metadata=(Units="unitless",Description="Current simulation mode; 0 for normal operation (no simulation); other supported values are specific to each CSC.")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_simulationMode_694167eb 
struct logevent_softwareVersions_44b5ec7c {  // @Metadata=(Description="Current verions of software in use by CSC.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  string<16>	salVersion; // @Metadata=(Units="unitless",Description="This is the current version of SAL generation")
	  string<16>	xmlVersion; // @Metadata=(Units="unitless",Description="This is the current version of CSC XML")
	  string<16>	openSpliceVersion; // @Metadata=(Units="unitless",Description="This is the current version of OpenSplice")
	  string<16>	cscVersion; // @Metadata=(Units="unitless",Description="This is the top-level version of the CSC")
	  string	subsystemVersions; // @Metadata=(Units="unitless",Description="A comma delimited list of key=value pairs relating subsystem name (key) to its version number (value). This may be left blank if there are no subsystems within a CSC")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_softwareVersions_44b5ec7c 
struct logevent_summaryState_4cb989ae {  // @Metadata=(Description="Current summary state of the CSC")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  long	summaryState; // @Metadata=(Units="unitless",Description="High level state machine state identifier")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_summaryState_4cb989ae 
struct logevent_target_f7e9c607 {  // @Metadata=(Description="Commanded position and velocity.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	elevation; // @Metadata=(Units="deg",Description="Target mount elevation angle at the specified time.")
	  double	elevationVelocity; // @Metadata=(Units="deg/second",Description="Target mount elevation angle velocity at the specified time.")
	  double	azimuth; // @Metadata=(Units="deg",Description="Target mount azimuth angle at the specified time. The allowed range is 0 to 360.")
	  double	azimuthVelocity; // @Metadata=(Units="deg/second",Description="Target mount azimuth velocity at the specified time.")
	  double	nasmyth1RotatorAngle; // @Metadata=(Units="deg",Description="Target Nasmyth 1 rotator angle at the specified time.")
	  double	nasmyth1RotatorAngleVelocity; // @Metadata=(Units="deg/second",Description="Target Nasmyth 1 rotator angle velocity at the specified time.")
	  double	nasmyth2RotatorAngle; // @Metadata=(Units="deg",Description="Target Nasmyth 1 rotator angle at the specified time.")
	  double	nasmyth2RotatorAngleVelocity; // @Metadata=(Units="deg/second",Description="Target Nasmyth 1 rotator angle velocity at the specified time.")
	  double	taiTime; // @Metadata=(Units="second",Description="TAI date at which the commanded positions and velocities apply; as unix time.")
	  long	trackId; // @Metadata=(Units="dimensionless",Description="Unique target identifier ")
	  string<256>	tracksys; // @Metadata=(Units="dimensionless",Description="Defines tracking coordinate system as sidereal; non-sidereal or local.")
	  string<256>	radesys; // @Metadata=(Units="dimensionless",Description="Coordinate reference frame of RA/DEC axes. This originates from the pointing component and is used for WCS definition (e.g. FK5 or ICRS).")
	  long	priority; // @Metadata=(Units="unitless",Description="Priority code")
	};
#pragma keylist logevent_target_f7e9c607 
struct measuredMotorVelocity_11248b60 {  // @Metadata=(Description="Measured motor velocity for all drives")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	elevationMotorVelocity[100]; // @Metadata=(Units="deg/second",Description="Measured velocity of elevation drive motor at 100 Hz beginning at the specified time.")
	  double	azimuthMotor1Velocity[100]; // @Metadata=(Units="deg/second",Description="Measured velocity of azimuth drive 1 motor at 100 Hz beginning at the specified time.")
	  double	azimuthMotor2Velocity[100]; // @Metadata=(Units="deg/second",Description="Measured velocity of azimuth drive 2 motor at 100 Hz beginning at the specified time.")
	  double	nasmyth1MotorVelocity[100]; // @Metadata=(Units="deg/second",Description="Measured velocity of Nasmyth 1 drive motor at 100 Hz beginning at the specified time.")
	  double	nasmyth2MotorVelocity[100]; // @Metadata=(Units="deg/second",Description="Measured velocity of Nasmyth 2 drive motor at 100 Hz beginning at the specified time.")
	  double	m3Velocity[100]; // @Metadata=(Units="deg/second",Description="Measured velocity of M3 rotator drive motor at 100 Hz beginning at the specified time.")
	};
#pragma keylist measuredMotorVelocity_11248b60 
struct measuredTorque_5c82890d {  // @Metadata=(Description="Measured torque for all drives")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	elevationMotorTorque[100]; // @Metadata=(Units="A",Description="Elevation drive measured motor torque at 100 Hz beginning at the specified time.")
	  double	azimuthMotor1Torque[100]; // @Metadata=(Units="A",Description="Azimuth drive 1 measured motor torque at 100 Hz beginning at the specified time.")
	  double	azimuthMotor2Torque[100]; // @Metadata=(Units="A",Description="Azimuth drive 2 measured motor torque at 100 Hz beginning at the specified time.")
	  double	nasmyth1MotorTorque[100]; // @Metadata=(Units="A",Description="Nasmyth 1 rotator drive measured motor torque at 100 Hz beginning at the specified time.")
	  double	nasmyth2MotorTorque[100]; // @Metadata=(Units="A",Description="Nasmyth 2 rotator drive measured motor torque at 100 Hz beginning at the specified time.")
	  double	m3Torque[100]; // @Metadata=(Units="A",Description="M3 rotator drive measured motor torque at 100 Hz beginning at the specified time.")
	};
#pragma keylist measuredTorque_5c82890d 
struct mount_AzEl_Encoders_54eb7e75 {  // @Metadata=(Description="Telemetry for elevation and azimuth encoders")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	elevationCalculatedAngle[100]; // @Metadata=(Units="deg",Description="Elevation axis position computed from the axis encoders at 100 Hz beginning at the specified time.")
	  double	azimuthCalculatedAngle[100]; // @Metadata=(Units="deg",Description="Azimuth axis position computed from the axis encoders at 100 Hz beginning at the specified time. The range is the hard stop limits (L3); approximately -280 to 280.")
	  long	elevationEncoder1Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by elevation axis encoder 1 at 100 Hz beginning at the specified time.")
	  long	elevationEncoder2Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by elevation axis encoder 2 at 100 Hz beginning at the specified time.")
	  long	elevationEncoder3Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by elevation axis encoder 3 at 100 Hz beginning at the specified time.")
	  long	azimuthEncoder1Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by azimuth axis encoder 1 at 100 Hz beginning at the specified time.")
	  long	azimuthEncoder2Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by azimuth axis encoder 2 at 100 Hz beginning at the specified time.")
	  long	azimuthEncoder3Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by azimuth axis encoder 3 at 100 Hz beginning at the specified time.")
	  long	trackId; // @Metadata=(Units="dimensionless",Description="Unique identifier given by the ATPoining Component")
	};
#pragma keylist mount_AzEl_Encoders_54eb7e75 
struct mount_Nasmyth_Encoders_f2c67405 {  // @Metadata=(Description="Telemetry for Nasmyth encoders")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	nasmyth1CalculatedAngle[100]; // @Metadata=(Units="deg",Description="Nasmyth 1 axis position computed from the axis encoders; or nan if this axis is not in use. The range is the software limits (L1); approximately -175 to 175. Increasing the range requires installation of an additional switch. ")
	  double	nasmyth2CalculatedAngle[100]; // @Metadata=(Units="deg",Description="Nasmyth 2 axis position computed from the axis encoders; or nan if this axis is not in use. The range is the hard stop limits (L3); approximately -175 to 175. Increasing the range requires installation of an additional switch.")
	  long	nasmyth1Encoder1Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth 1 rotator axis encoder 1.")
	  long	nasmyth1Encoder2Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth 1 rotator axis encoder 2.")
	  long	nasmyth1Encoder3Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth 1 rotator axis encoder 3.")
	  long	nasmyth2Encoder1Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth 2 rotator axis encoder 1.")
	  long	nasmyth2Encoder2Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth 2 rotator axis encoder 2.")
	  long	nasmyth2Encoder3Raw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth 2 rotator axis encoder 3.")
	  long	trackId; // @Metadata=(Units="dimensionless",Description="Unique identifier given by the ATPoining Component")
	};
#pragma keylist mount_Nasmyth_Encoders_f2c67405 
struct nasymth_m3_mountMotorEncoders_5a1b31e3 {  // @Metadata=(Description="Position reported by Nasmyth and M3 mount encoders")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	nasmyth1Encoder[100]; // @Metadata=(Units="deg",Description="Position reported by Nasmyth rotator 1 drive motor encoder at 100 Hz beginning at the specified time; converted to deg.")
	  double	nasmyth2Encoder[100]; // @Metadata=(Units="deg",Description="Position reported by Nasmyth rotator 2 drive motor encoder at 100 Hz beginning at the specified time; converted to deg.")
	  double	m3Encoder[100]; // @Metadata=(Units="deg",Description="Position reported by M3 rotator drive motor encoder at 100 Hz beginning at the specified time; converted to deg.")
	  long	nasmyth1EncoderRaw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth rotator 1 drive motor encoder at 100 Hz beginning at the specified time.")
	  long	nasmyth2EncoderRaw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by Nasmyth rotator 2 drive motor encoder at 100 Hz beginning at the specified time.")
	  long	m3EncoderRaw[100]; // @Metadata=(Units="dimensionless",Description="Position (in encoder counts) reported by M3 rotator drive motor encoder at 100 Hz beginning at the specified time.")
	};
#pragma keylist nasymth_m3_mountMotorEncoders_5a1b31e3 
struct torqueDemand_b19bdb3d {  // @Metadata=(Description="Commanded torque for all drives except M3")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	elevationMotorTorque[100]; // @Metadata=(Units="A",Description="Elevation drive commanded motor torque at 100 Hz beginning at the specified time.")
	  double	azimuthMotor1Torque[100]; // @Metadata=(Units="A",Description="Azimuth drive 1 commanded motor torque at 100 Hz beginning at the specified time.")
	  double	azimuthMotor2Torque[100]; // @Metadata=(Units="A",Description="Azimuth drive 2 commanded motor torque at 100 Hz beginning at the specified time.")
	  double	nasmyth1MotorTorque[100]; // @Metadata=(Units="A",Description="Nasmyth 1 rotator drive commanded motor torque at 100 Hz beginning at the specified time.")
	  double	nasmyth2MotorTorque[100]; // @Metadata=(Units="A",Description="Nasmyth 2 rotator drive commanded motor torque at 100 Hz beginning at the specified time.")
	};
#pragma keylist torqueDemand_b19bdb3d 
struct trajectory_1285f4be {  // @Metadata=(Description="Telescope trajectory Position/Velocity/Time from the ATMCS trajectory generator at 100Hz; starting at the specified time.")
	  string<8>	private_revCode; //private // @Metadata=(Units="unitless",Description="Revision code of topic")
	  double	private_sndStamp; //private // @Metadata=(Units="second",Description="TAI at sender")
	  double	private_rcvStamp; //private // @Metadata=(Units="second",Description="TAI at receiver")
	  long		private_seqNum; //private // @Metadata=(Units="unitless",Description="Sequence number")
	  long		private_origin; //private // @Metadata=(Units="unitless",Description="PID code of sender")
	  long		private_host; //private // @Metadata=(Units="unitless",Description="IP of sender")
	  double	cRIO_timestamp; // @Metadata=(Units="second",Description="Time for the first sample of each telemetry item in this topic; as measured by the cRIO clock; as unix time.")
	  double	elevation[100]; // @Metadata=(Units="deg",Description="Target mount elevation angle at 100Hz beginning at the specified time.")
	  double	elevationVelocity[100]; // @Metadata=(Units="deg/second",Description="Target mount elevation angle velocity at 100Hz beginning at the specified time.")
	  double	azimuth[100]; // @Metadata=(Units="deg",Description="Target mount azimuth angle at 100Hz beginning at the specified time. The allowed range is 0 to 360.")
	  double	azimuthVelocity[100]; // @Metadata=(Units="deg/second",Description="Target mount azimuth velocity at 100Hz beginning at the specified time.")
	  double	nasmyth1RotatorAngle[100]; // @Metadata=(Units="deg",Description="Target Nasmyth 1 rotator angle at 100Hz beginning at the specified time.")
	  double	nasmyth1RotatorAngleVelocity[100]; // @Metadata=(Units="deg/second",Description="Target Nasmyth 1 rotator angle velocity at 100Hz beginning at the specified time.")
	  double	nasmyth2RotatorAngle[100]; // @Metadata=(Units="deg",Description="Target Nasmyth 1 rotator angle at 100Hz beginning at the specified time.")
	  double	nasmyth2RotatorAngleVelocity[100]; // @Metadata=(Units="deg/second",Description="Target Nasmyth 1 rotator angle velocity at 100Hz beginning at the specified time.")
	};
#pragma keylist trajectory_1285f4be 
struct ackcmd_f0f9ad9d {  // @Metadata=(Description="")
      string<8>	private_revCode;
      double		private_sndStamp;
      double		private_rcvStamp;
      long		private_origin;
      long 		private_host;
      long		private_seqNum;
      long 		ack;
      long 		error;
      string<256>	result;
      long		host;
      long		origin;
      long		cmdtype;
      double		timeout;
	};
#pragma keylist ackcmd_f0f9ad9d 
};

