Skip to content
Snippets Groups Projects
  1. Jul 12, 2011
  2. Jun 30, 2011
  3. May 17, 2011
  4. May 04, 2011
    • Ruud Overeem's avatar
      Bug 1000: Several improvements: · 359bcebe
      Ruud Overeem authored
       + ParentControl: better handling of out of band QUIT events.
       + BeamServer: better handling of timer-events during substates
       + StationControl: better handling of QUIT events.
       + ObservationControl:
         * Parameter 'reportType' = Full|Changes for managing reports during heartbeat
         * Parameter heartbeatInterval moved from SAS to config file
         * Nices reporting of child-states.
       + deleteTree: also clear VICkvt table when a tree is deleted.
      359bcebe
  5. Apr 28, 2011
    • Ruud Overeem's avatar
      Bug 1000: · 6fdcff71
      Ruud Overeem authored
      + Update to PythonControl to allow clients that can not communicate.
      + Added 'result' field to CONTROL_CONNECT message to pass failures.
      + Fixed stopping garbagecontroller timer in ChildControl
      + Fixed emergency stop timer in ParentControl
      + ObservationControl reports more detailed how an observation ends.
      6fdcff71
  6. Apr 27, 2011
  7. Mar 29, 2011
  8. Mar 22, 2011
  9. Feb 04, 2011
  10. Feb 01, 2011
  11. Jan 25, 2011
  12. Oct 28, 2010
  13. Aug 16, 2010
  14. May 31, 2010
  15. Apr 07, 2010
  16. Mar 02, 2010
  17. Jan 22, 2010
  18. Dec 04, 2009
  19. Oct 16, 2009
  20. Oct 07, 2009
    • Marcel Loose's avatar
      Bug 1310: · 1ce7c167
      Marcel Loose authored
      - New lofar_package() macro replaces lofar_add_package(). The new macro
        supports recursive addition of LOFAR packages, using the dependencies passed
        as arguments. For example: 
          lofar_package(Blob 1.0 DEPENDS Common) 
        will add the package Common to the build (unless it was already added).
        This new features enables a "top-down" package specification order, which is
        required for building subsystems.
      
      - New lofar_add_package() macro replaces lofar_add_subdirectory(). This macro
        uses a ${pkg}_SOURCE_DIR variable to locate the source directory of the
        package <pkg>. This information is needed, as we cannot simply include
        actual subdirectories anymore, because dependent package(s) might be located
        in a different directory tree.
      
      - New file LofarPackageList.cmake, which sets the ${pkg}_SOURCE_DIR variables.
        This file is generated by a script gen_LofarPackageList_cmake.sh, which must
        be rerun when LOFAR packages are added, moved, or removed.
      1ce7c167
  21. Sep 18, 2009
  22. Sep 14, 2009
  23. Sep 08, 2009
  24. Aug 13, 2009
  25. Jul 08, 2009
  26. Jul 03, 2009
  27. Jul 02, 2009
  28. Apr 19, 2009
    • Ruud Overeem's avatar
      Bug 1000: · c332c8eb
      Ruud Overeem authored
      Some major changes are made in GCF/TM:
       1) GCFScheduler replaces all global GCFTask functions and variables.
       2) An event-queue is introduced
       3) Return value NEXT_STATE is added
       4) The function autoOpen is added to TCP ports
       5) 'fast' mode available for low level drivers.
      
      Ad. 1
      The GCFTask class had a lot of global functions and variables that were 
      not bound to one task but were multi-task items. All these things are 
      moved to a new class GCFScheduler. This class is a singleton class.
      Consequence of this is that 'init', 'run' and 'stop' are not longer 
      connected to the GCFTask class but are now part of the Scheduler.
      
      old code:
      	GCFTask::init(argc, argv, argv[0]);
      
      	myTask	a("a");
      	myTasl	b("b");
      	a.start();
      	b.start();
      
      	GCFTask::run();
      
      new code:
      	GCFScheduler::instance()->init(argc, argv, argv[0]);
      
      	myTask	a("a");
      	myTasl	b("b");
      	a.start();
      	b.start();
      
      	GCFScheduler::instance()->run();
      
      In the same the stop function should be called with GCFScheduler::instance()->stop();
      
      
      Ad. 2
      The events are now stored in a queue before they are passed to the tasks. 
      This has two benefits:
       - The code does not have to be re-entrant anymore because TRAN drops the 
         F_EXIT and F_ENTRY in the queue in stead of executing them during the TRAN-line.
       - The values for GCFEvent::TResult you return DO MATTER NOW. See Ad 3.
      
      The disadvantage of the queue is that the scheduler has to make a copy of 
      the event before placing it in the queue. To avoid needless copies all events
      that are NO framework events (F_FSM_PROTOCOL and F_PORT_PROTOCOL) are passed 
      immediately to the task. When the task returns HANDLED we save ourselves the 
      effort of a copy. When anything else is returned the event is treated accordingly. See Ad 3.
      
      
      Ad. 3
      Since there is a queue now, the value returned by the task matters:
      HANDLED: event is removed from the queue.
      NEXT_STATE: event is parked on the queue until the task changes state with TRAN(...). 
      After the F_ENTRY event all events that were parked with NEXT_STATE are passed 
      to the task again.
      NOT_HANDLED: this value will become OBSOLETE since it doesn't tell the scheduler 
      what to do. FOR NOW the event will be destroyed.
      
      Remark: In the future the return values may be extended with values like 
      HOLD_x_SEC or HOLD_x_EVENTS.
      
      
      Ad. 4
      To simplify opening or reopening a port the function autoOpen is added to TCPPorts.
      syntax: autoOpen(nrRetries, maxTimeout, reconnectInterval)
      
      This function does several retries to setup the connection. The user can choose 
      the use the nrRetries and reconnectInterval arguments or use the maxTimeout 
      (and reconnectinterval) arguments:
        nrRetries        : -1 = infinite ; How often to retry the open when it fails.
        reconnectInterval: After how many seconds after a fail a reconnect attempt will be made.
        timeout          : -1 = infinite ; How long the auto-open attempts may last.
      
      When both nrRetries and timeout are specified the condition that will be met first will 
      stop the auto open sequence.
      
      When the connection is made an F_CONNECTED events is send like open() does. When the 
      connection can not be made within the given limitations a F_DISCONNECTED is returned.
      
      Note: autoOpen(0,0) acts the same as open()
      
      
      Ad. 5
      Lowlevel drivers like the RSPDriver which heavily lean on FSMs (several 100's)  may 
      not be happy with the eventqueue because statetransitions are handled via the queue. 
      These drivers can call 'disableQueue()' after calling GCFScheduler::instance()->init(..). 
      The queue mechanisme is than completely bypassed and everything works like the 
      old-situation again.
      
      
      Internal notes:
      The boolean that the open() function returned was not really straitforward defined 
      and therefor not used anywhere (as far as I know). The value that is returned now is 
      true when a CONNECT or DISCONNECT message in placed in the queue and false when the 
      ServiceBrokerTask needs so more time to give a result.
       
      c332c8eb
  29. Apr 16, 2009
  30. Mar 27, 2009
  31. Mar 12, 2009
  32. Feb 06, 2009
  33. Feb 04, 2009
Loading