Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Journal 7.06 KiB
Modifications made in MAC for CS1
=================================

GCF/GCFCommon
=============
** ParameterSet: changed GCF version of ParameterSet to ACC::APS::ParameterSet.
		Function GCF::Parameterset::instance --> ParameterSetInstance()
		Loosing searchPath functionality in ParameterSet, this can be compensated
		with the new FileLocator classes of LCS/Common.
** GCF_ServiceInfo.h: Created a file containing all servicenames to be used in MAC
		as well the well-known portnumber of any ServiceBroker.
** GCF_PVTypes.h: created file that includes all GCF_PVxxx files.
** Utils: Added function myHostname(giveFullName).


APL/APLCommon
=============
** Rewrote all software in this directory.
** Added ANNOUNCEMENT and NEWPARENT messages to the StartDaemonProtocol to support 
		shared controller. Modified the other messages to meet proposition [A].
** ControllerDefines.h replaces LogicalDevice.h. The file does not only define
		constants for controllertypes and their errors but also a collection of
		routines for creating and using controller names. See proposition [A].
** StationInfo: All kind of routines to get the stationname, ringnr, armnr etc. of
		the machine we are running on.
** CTState: Class that contains all possible states a controller can be in. Supports
		convertions from nr->name and viceversa.
** Observation: Class the can be constructed from a Parsetfile and that substracts
		all observationbased information from that parsetfile. The information
		is than available as public fields.
** ParentControl: singleton task that a controller must use to manage the communication
		and administration of its parent-controller(s). The task can also take care
		of the claim/prepare/start/stop timers and is capable of merging in 'missing'
		states when an 'out of band' state-change is requested. E.g. merges in 'prepare'
		when a 'run' state is received in 'claim' mode.
** ChildControl: singleton task that a controller must use to manage the communication
		and administration of its child-controller(s). Capable of starting child-
		controllers and creating the corresponding parsetfiles.

GCF/TM
======
** GCF_PortInterface: Added functionality for support of instanceNumbers on
		ports. Also introduced 'smart' servicenames that are aware of these
		instanceNumbers.
		Use the function 'setInstanceNr(int)' on ports that need a different 
		instancenumber than 0.
** xxxPortxx: in all xxxPort classes the 'name' parameter in the constructor
		and the 'init' routine changed to const string&.
		Modified the 'logic' behind the search for service names and numbers in
		all kind of configuration files. When using a servicename(see GCFCommon/
		GCF_ServiceInfo.h> for the name of the port the configfiles are ignored
		and the ServiceBroker is used immediately.
** GCF_TimerPort: New porttype for handling timers.
** ServiceBroker: no longer informs clients about gone services.
** GCF_Task: uses LofarLocators for log_prop and conf file. Tasks do not abort anymore
		when the parsetfile can not be found.
** GTM_ServiceBroker: does not read ServiceBroker.conf file anymore. Solved major
		bug in unregistering all ports always. (because of another bug in the
		GSB_Controller this never lead to problems).
		Major revision in order to allow connections to ServiceBrokers on other
		machines also. Now uses map with connections to all SB's
** GSB_Controller: MAJOR(!) revision of broker after a continuous chain of problems.
		Cut away almost all crap, no support for multiple hosts anymore.
		Made SB failsave: SB keep admin of disk and reads it in on startup. Number
		that are readin from this file are not used the first 5 minutes.
** SB_protocol.prot: introduced REREGISTER events to inform a restarted serviceBroker
		what ports are still in use.

Updated several sources for new ParameterSet.

GCF/PAL
=======
Updated several sources for new ParameterSet.


GCF/PAL/PML
===========
** GPMController: uses LofarLocators for parameterfiles.


APL/APLCommon
=============
Updated several sources for new ParameterSet.
Added several ; at end of LOG_xxx statements.
Added define LOFAR_SHARE_LOCATION /opt/lofar/share in APL_Defines.h

** LogicalDeviceFactoryBase: replaced by LogicalDeviceStarter class that starts
		a new program in stead of a new task.
** StartDaemon: works with LogicalDeviceStarter iso LogicalDeviceFactoryBase. 
		This depends on the define CREATING_TASKS for now.
** APLUtilities: replaced 'tmpnam' with 'mkstemp' function.
		Added optional argument to getTempFileName


GCF/APL/VIC/VirtualInstrument
=============================
** VirtualInstrumentStartDaemonMain: renamed to CCUStartDaemonMain.
** VirtualInstrument: is now a LogicalDevice program iso the startdaemon.
** MaintenanceVI: is now a LogicalDevice program iso a task
** ObservationVI: is now a LogicalDevice program iso a task

APL/MainCU/src/MACScheduler
===========================
Complete new implementation of the MACScheduler: It polls the OTDB itself
and only controls ObsControllers.

APL/MainCU/src/ObservationControl
=================================
New controller that is the topcontroller of each observation. It is started by the
MACScheduler and takes care of all controllers necessary to do the observation.

APL/StationCU/src/StationControl
================================
New controller that is the topcontroller of a station. It manages all other controllers
on the station. It runs always an it (thus) capable of managing several observations.

APL/StationCU/src/DigitalBoardControl
=====================================
New controller that controls the sample clock of the station. The clock value in PVSS
is leading. When someone changes the clock manually it immediately changes the clock
back. The clock value in PVSS is manages by the StationController.

APL/StationCU/src/BeamControl
=============================
New controller that manages the beams of one observation.

APL/StationCU/src/CalibrationControl
====================================
New controller that managess the calibration of the subarrays of one observation.


PROPOSITIONS
============
[A]	The (task)names of the controllers are uniq within LOFAR. This means the name
	must contain the instanceNr of the controller and the observationID.
	The construction of the controller/task name is supported in the file
	ControllerDefines. All tasks/programs/jobs/whatever must always use the 
	name that is returned by the call controllerName(type, iNr, ObsID).
	(only the startDaemon uses the sharedControllerName).
	Note: This proposition is used in ParentControl, ChildControl and the base-
		  source for shared controllers to do their administration.


PROBLEMS TO SOLVE
=================
** BOOST_SP_USE_PTHREADS is now in several .h and .cc file. Like to have a lofar_sharedptr.h.
** Can logical device use global parameterSet anywhere?
** Support SHARED LogicalDevices in the LDStartDaemon.
** GSB_Controller should be made fail save.
** GSB_Controller should assign the portnumbers round robin to maximize the 
   're-use interval'.
** GTM_ServiceBroker should support multihosts.
** GCFTasks are not scheduled right when an event is not handled.
** LDStartDaemon: when execv fails child LDSD keeps running.