Release Date: Feb 12, 2016
Release Name: 2016A
General Description: Rollup of changes and patches since 2015C (see 2015C release notes for patches).
Telescope Operator Overview Information
Support Astronomer Overview Information
PCS: Fix to IT#6010 and IT#5913. See PCS section below for details.
Both the Syslog and Event log no longer have two time stamps.
GCS: Updated the time string for the TIME-OBS FITS keyword in the guide images to have three decimal places for the seconds portion of the string as emailed with John H.
GCS: Binning functionality has been restored - IT 5866
PCS: The DETXY co-pointing limit check has been implemented which addresses a portion of IT #5025.
New Functionality Tests that need to be performed with the Telescope
Patches to the Release
Common software. The number of context switches (and CPU time) for all subsystems and GUIs has been reduced by slowing the loop that checks for new RPC commands from 100 Hz to 25 Hz, except for the 'execute' RPC which will remain at 100 Hz. There are two context switches each time through the loop, so we have decreased the number of context switches from 200/second to 50/second for 16 out of 17 threads for a reduction of about 19000/second on computers tcs1 and tcs2.
LSS 4.2a. Lower the RPC listen rate for RPCs subscribeEvent and unsubscribeEvent from 100 Hz to 25 Hz, but keep logEvent at 100 Hz to maintain good latency for events.
GCS 5.2. Slow the timing in the ImageServerThread: remove some unnecessary short waits, and slow the execute method loop from very fast to 100 milliseconds. Slow two while loops from very fast to 5 milliseconds. This is to reduce the number of context switches but still keep the loops responsive.
syslogserver. Do not make the old log file readonly if the symbolic link 'current.log' does not exist. This prevents making the containing directory readonly.
IIF 8.31a. Add new configurable parameter offsetDelayThresh. Skip the offset delay (for optics offsets) if the size of the offset is smaller.
IIFGUI 4.12a. Add variables offsetDelayThresh and offsetDelay to control GUI. Improve tooltips for Offset Collimation Threshold parameters.
PSF 6.12a. Make file line buffer longer to handle long comment lines in configuration files.
New telemetry variables were added to the mirror ventilation stream:
Variable, Unit, Description
pb0401outputfreq, Hertz, PB0401 commanded output frequency
pb0401outputhz, Hertz, PB0401 output frequency
pb0401motorrpm, RPM, PB0401 motor RPMs
pb0401motorpower, Percent, PB0401 power output (percentage)
pb0401motoramps, Ampere, PB0401 output current
pb0401motorvolts, Volt, PB0401 output voltage
pb0401motortorque, Percent, PB0401 output torque (percentage of max)
Pulling and converting timestamps from the thermal PLC (via the ECS PLC) for sample times of the SX and DX Agilents
DD and telemetry items for the new Emerson 2400S flowmeters on DX; saving mass flow, density and temperature. Flowmeters are FM0601-FM0604. Only FM0603 and FM0604 are reporting flows in refmem. FM0601 and FM0602 still TBD on installation.
Leak detection DD and events created for the leak detection work with FM0603 & FM0604,
Shutter door "fail to latch" (IT #5850) DD and events in upcoming shutter work.
DD bits and event for shutter door sun avoidance interlock with buttons on level 2 and level 5.
Spare bits, integers, floats for instrument cooling and shutter doors.
Updated all invocations of sleep() in the subsystem with SystemClock::sleep().
ecs.conf: Removed the "downtown64" locale as clean up.
Added a label to the top of the Shutter and Ventilation Door pages to indicate door control state: Door Permission Enabled/Disabled. In addition, when the door has permission to open, the Shutter and Ventilation Door pages are colored a light green in contrast to the nominal light grey color.
use relativeHS in clipping to center the clipped subimage
divide the clipping parameters by binning factor (ALL config file parms should always be for binning 1)
catch bad clipping, bad subimages due to clipping
verified the use of binned/unbinned pixelscales and updated the comments to be clear
Force the GCS to query the AGW for the filter in use on a Preset. It is possible for an instrument to change the filter and not notify the GCS. In this way GCS, and subsequently PCS, will have the latest wavelength information to compute the differential atmospheric refraction. This check is NOT done on an Offset. This addresses IT#5177.
Updated the time string for the TIME-OBS FITS keyword in the guide images to have three decimal places for the seconds portion of the string.
Added an array of long spares to the pre-existing data dictionary spares.
Added units (when possible) and descriptions to the following GCS telemetry streams: agwunit, agwprobe, acquisition, and guiding.
Updated gcs.conf to remove "downtown64" references and made sure the "downtown" locale values are correct.
Updated sleep() invocations with SystemClock::sleep() in all important routines.
Disable focus policy for buttons in the entire GUI. This includes QPushbutton, as well as QCheckbox.
IT#6010 (LUCI refuses to do script with different telescope modes on each side) - PCS now ensures each side is at least guide mode AND not adaptivettm/ace/ice_track before it enforces a synchronized pointing correction. The pointing correction is only relevant when PCS is being sent Preset commands issued as synchronized binocular or both from focal stations which use the GCS.
Force the updateReferenceOrigin() method (AO analog to the updateGuideOrigin() method) which rectifies the "predicted" to the "found" location of the reference object by adjusting the telescope trajectories to never be synchronous. This means as soon as a request is made by AOS, the PCS will process the request rather than wait for a corresponding request on the other telescope side. This is to address the PCS portion of IT#5913.
Fixed the setEquatorialTarget event for "below the horizon" issues. The event was improperly formed for asynchronous Presets so the entire message indicating the essential problem did not get generated for the return command object.
Implemented the co-pointing check for DETXY offsets being issued on both telescope sides for targets: sidereal, rotator mode POSITION and PARALLACTIC, mixture of absolute and relative offsets, non-zero pointing origins, and non-zero position or parallactic angles. The requested DETXY offsets are used to compute the location on the sky using a copy of the sided mount virtual telescope which represents the total state of the particular telescope side. The existing routines which evaluate the equatorial sky coordinates (RADEC offsets) for the co-pointing limit violation are then used for the analysis. There are subtleties associated with DETXY offsets and the pointing origin which can have an impact on Presets and RADEC offsets which still need to be evaluated: mixture of RADEC offsets on one side and DETXY offsets on the other side, mixture of RADEC and DETXY offsets on the same side, and non-sidereal targets. KNOWN BUG: the ability to increment the angle when specifying the DETXY offset does not work properly to compute the co-pointing limit check only.
Fixed "busy loops" which were using significant CPU usage. All instances of these types of loops were improved and now include sleep invocations of duration as appropriate to the update cycle of the fast loop (20 Hz). The busy loops were essentially waiting for N cycles of the fast loop to ensure trajectories were updated with new data.
Ensure all calls to sleep functions use the SystemClock class.
Removed "downtown64" locale from pcs.conf file and made sure the "downtown" locale is correct.
Added a new Warning event to computeKFPCoordinates() and getKFPCoordinates() to accommodate when the gating variable is set to TRUE to allow the KFP coordinates to be computed - even though the new target may not be ingested and the coordinates could be stale.
If the authorization of instruments were done to transition from a Binocular state to a Monocular state AND the MCSPU were down during the authorization, the PCS could be left in a state where it believed that the telescope were still in Binocular mode. This would eventually cause problems as Presets and Offsets would be considered asynchronous. This problem has been addressed.
Added more PCS data dictionary spares for double, int, long, and string.
Disable focus policy for buttons in the entire GUI. This includes QPushbutton, as well as internal tcs_gui::button widgets.
Issue SysLog message showing ID of each subsystem when it registers. (TCS anomaly)
core - foundation routines
Make symlink directory-relative so access is simpler. This means the the LSS symlink 'current.events' is directory-relative.
Remove methods timedlock() and get_time() from Mutex class since they are not used and the timedlock() method had CPU bound loops. (TCS anomaly)
datadictionary - reflective memory and event support
editor - data dictionary editor
eventhandler - event handling
networkconfig - subsystem management
Make symlink 'current.log' directory-relative so access is simpler.
Clean up and improve help text
Add file name option to 'config' ('-c') command.
Fix check for mountainUser.
Make extra timestamp configurable (environmental variable TCSSYSLOGTIMESTAMP) with the default being off. (TCS anomaly)
reflectivememory - global shared memory
rpc - communication protocol
Require the first octet of the IP address matches the first octet of the 'command filter' address (IssueTrak 5756). This prevents using RPCs across subnets.
Remove globals RPCBacklog and RPCAccepting and replace with Helper::backlog, Helper::accepting, and methods Helper::getBacklog() and Helper::accepting(), and RPCHost::getStatus().
Make the accept loop timeout configurable. The default is now about 100 Hz, down from about 500 Hz. This adds latency to processing incoming RPC connections, but we don't need two millisecond response time, and this lowers the CPU time noticeably. Note this might affect things like the maximum Event logging rate.
setvalue - reflective memory access
tcs_config - tcs configuration
viewer - data dictionary viewer
viewer Version 2.12
Do not check for environment variable LBTCONF_PATH since it is many years since it was used.
Update 'About Box' text.
ddsclient - Data Dictionary Subsystem client
ddsclient Version 1.3 (Activated Nov 20, 2015)
Do not write results to Syslog for command GetEvents.
Disable debugging in the DDS Factory around the factory->create() call to suppress more unnecessary Syslog messages.