fdhwlib  2.0.25
Todo List
Class BaseServer

Use a independant threads for all connections. If one connection hangs, the other won't be affected?!

Improve the Server managment. Loging, Shutdown via IP. For some other purpose a New class similar to Pbus/PbusProxy couble may be useful for maintenance and run control. Eg. shutdown + restart of the Server, Control of the IRdispatcher!!!

Member BaseServer::init_server (int fd1=-1, int fd2=-1)
Count the sampling times to avoid data losses due to server load
Class CalibPulse
Calculate the integral of a pulse!
Class cmds

Add mathematical functions. (Mean, Variance,..)

Implement a command to print the help lines help(FILE *fout, char *format, ...); Features:

  • The format should be similar to the printf-Style,
  • a variable number of arguments can be given (for the implementation compare Pbus::debug).
  • The width of the two columns is defined in this function
  • The second column is adjusted to the width of the screen.

Implement static members, that hold a kind of environment. The environment is based on a string array: Name, Value, description of the parameter. Provide functions to print, add, modify and delete the environment. Should be used for global settings required in more than one instruction set (row, col, page, ...). A specical field could take the value of the last operation. This will allow conditional scripting! Provide conditional commands!

Class EventLoopCmds

Übertragung der Datenbank-Parameter vom Client zum Server

Darstellung der aufgenommenen Run, tabelarische Ausgabe,

Histogramm der Energieverteilung

Class FE

init commands, compare with Dennis programm!

connection with the IR dispatcher, Event handling for signals, multiplexing of IRs ??

specify the possible exceptions for the methods!

global definitions (number of rows, ...) see FEdef.h.

Insert version number

Class FE4

init commands, compare with Dennis programm!

connection with the IR dispatcher, Event handling for signals, multiplexing of IRs ??

specify the possible exceptions for the methods!

global definitions (number of rows, ...) see FEdef.h.

Insert version number

Class FE4configuration
Read the parameter for init from the configuration file!
Class FE4event
Extend the getTimeStamp function to return also the address of the first and last trigger.
Member FE4event::getTimeStamp (int page, unsigned long *sec, int *subSec1, int *subSec2, int *imgAddr, int *evtAddr, int *trigger=0)
Check the relation between times and address pointer in the hardware with Sascha or Matthias Balzer. Check also mirror.exe!
Class FE4image
Make the statistical functions multitasking safe!
Class FE4timing

(THIS HAS CHANGED FOR V4 - Till 2009-04-09)

Add a function to read the "GPS clock" from the mirrorPC

Class FEbase

init commands, compare with Dennis programm!

connection with the IR dispatcher, Event handling for signals, multiplexing of IRs ??

specify the possible exceptions for the methods!

global definitions (number of rows, ...) see FEdef.h.

Insert version number

Class FEbaseConfiguration
Read the parameter for init from the configuration file!
Class FEbaseEvent
Extend the getTimeStamp function to return also the address of the first and last trigger.
Member FEbaseEvent::getTimeStamp (int page, unsigned long *sec, int *subSec1, int *subSec2, int *imgAddr, int *evtAddr, int *trigger=0)
Check the relation between times and address pointer in the hardware with Sascha or Matthias Balzer. Check also mirror.exe!
Class FEbaseImage
Make the statistical functions multitasking safe!
Class FEbaseTiming
Add a function to read the "GPS clock" from the mirrorPC
Class FEconfiguration
Read the parameter for init from the configuration file!
Class FEevent
Extend the getTimeStamp function to return also the address of the first and last trigger.
Member FEevent::getTimeStamp (int page, unsigned long *sec, int *subSec1, int *subSec2, int *imgAddr, int *evtAddr, int *trigger=0)
Check the relation between times and address pointer in the hardware with Sascha or Matthias Balzer. Check also mirror.exe!
Class FEimage
Make the statistical functions multitasking safe!
Class FEtiming
Add a function to read the "GPS clock" from the mirrorPC
Class Flt

Test and improve the check of the versions!!!

The macros to select all FLT channel and/or boards have to be redefined!

Replace numerical values in the code by local preprocessor variables!

Check shift operations on integer type variables!

Rename FltMean!!!

Member Flt::testMemory (FILE *fout, int ch=-1)

Measure test time, time with system turned off

Improve writing test pattern

Generate random test pattern

Member Flt::testTransferRate (FILE *fout, int ch=-1, int page=-1)

Measure test time, time with higher system load

Choose random pix and page for testing

Measure also the transfer rate for writing

Class FltPeriphRegister

It may be more consistent to number the FPGAs also starting with 0 ?!

There are inconsistencies in the definition of the relation between pixel number and fpga number?!

Class FltPixRegister
Remove the simulation of the block transfer in the functions read/write when DMA access becomes available
Class FltTestPattern
Add description for the test pattern modes. Is it possible read the actual mode?
Class GpsClock
Implement status message in this class and use it with different detail levels on both server and client side.
Class GpsClockCmds

Load almanac from file + save to file

Controls for the second adjustment

Class GpsServer

Implement the state machine in one function - not distributed! Re-implement selftest and site survey

Add the current leap second to the capture and timing buffer. The leap second information is always needed to convert the time stamp values.

Add unit tests for all gps classes

Put the buffers to a shared memory block. In case the program terminates or needs a restart no timestamp will be lost !!! Use a class to implement the buffer handling. Is it possible to restart the server witout loosing any time stamp?

Implement / separate the server function and display functions. Implement a display of the complete Ea-messages for the GpsUnit.

Move the server interface and all display functions to the class GpsClock. The methods of GpsClock should be used by both sides - client and server!

Member GpsServer::auger_msg_F (u_char *buf, size_t)
Add analysis of the GPS time correction parameters. Use this values to implement a useful interpolation of possibly missing values!
Class GpsUnit
Throw exceptions in case of an abnormal function result / no connection.
Class Inifile
There are warning of not initialized string functions ?!
Class KaEventLoop

Analyse and display the hardware buffer overflow

Implementent a Katrin simulation module...

Implement cyclic reading of measure mode

Add user defined vaibales that are included in the result

Implemtent experiment specific analysis

Implement automatic error detection of the readout loop. Lost data, ... wide energy spread?! Test run with changing parameters to check stability. Is the spread of the energy histogramm small enough?

Add individual histogramm for every pixel

Print result to file. The result should contain also other relevant data.

Class Pbus

Insert version number

Try-catch block for load_design() required!

IP: The proxy interface will not recognise if the connection close by the other side. Automatically try to make a new connection if possible!

Handling of the pbusd version!!!

Redesign required: Separation between Pbus and PbusControl!

IP: Throw PbusErrors if a error occures!

Du musst dazu einen Signalhandler fuer SIGPIPE installieren, der aber nichts tut, oder SIG_IGN. Dann kommt write(socket,...) mit -1 und errno=EPIPE zurueck. Auf diesen Fehler kann man dann geeignet reagieren. Ein read(socket,...) kommt mit 0 gelesenen Bytes zurueck, wenn der Socket gestorben ist, aber dass weisst Du sicherlich.

IP: Add IP instructions for the new commands stop and cont!

Implement test functions in pbus class that can be used by all registers to determine access speed and reliability.

Page Pbus connection via IP and pbusdaemon.
Move the telescope handling to the Pbus control class?!
Page Pbus Simulation Mode - Simulating the real hardware
Move the IR handling in simulation mode to the control class. The Pbus class should only contain the standard interface.
Class Pbus1394
Insert hotplugin in the functions checkIR and getIRvector.
Class PbusControl
May be it's good idea to move also the commands stop and continue to this class It is not one of the basic functions to modify the semaphores!
Class PbusDaemonVersion

New paramter: Start time of the server; may be the number of connected clients???

Implement the ipaddr parameter - now always left blank

Class PbusError
Windows has a different implementation of the runtime_error?! Compare the implementation in both systems!
Member PbusImp::s_sock
Warning: If the define pragma USE_MF_LOCAL_SYNC is checked there will be memory leackages? MFC Synchronization is more or less a secret to me?!
Class PbusPCI
Implement the access method for the new Pbus library.
Class PbusPCIDMA
Implement the access method for the new Pbus library.
Class PbusTemplate
Implement the access method for the new Pbus library.
Class semaControl
How can I get a list of all known semaphores?
Class semaphore

Would be nice to have named semaphores with a automatic numbering?!

There is another definition of semaphores in semaphore.h. Is this useful?

GUI programm for Windows NT also need protection, when multiple threads are used! Try to adapt a version with the MFC Semaphores.

Add optional argument to the constructor to define a message stream.

Class shell

Add Variables + Conditions in the command line.

Start the shell with the history of the last session!

Class SimpleServer

Use a independant threads for all connections. If one connection hangs, the other won't be affected?!

Improve the Server managment. Loging, Shutdown via IP. For some other purpose a New class similar to Pbus/PbusProxy couble may be useful for mainanace and run control. Eg. Shutdown + restart of the Server, Control of the IRdispatcher!!!

Class SltPattern
Determine the number of triggered pixel from the trigger memory! If the number is small it is more likely to skip a whole event with a muon pattern in.
Class SltTime
Simplify the calculation of the offsets
Class Subrack
Insert version number
Member Subrack::init (FILE *fout, char *inifile)

exention to initialize all connected telescopes

how to handle the different values for different pixel / telescopes?

are the names of the registers the best choise ???

print a generic inifile with all known registers.

Is it possible to check the system based on these register values? Where to define better entities?

Class TsBackgroundBase

Add a generalized class to provide analysis with the background data. E.g. mean + variance of the paramter vs pixel?!

Check how to do analysis with the 2D arrays?

Add compression level

Use readRegisterBlock in get()

Add a individual timestamp for every parameter ?!

Class TsBackgroundLoop

Streamer methoden einfhren, es erscheint unsauber, die Methoden mit zu kopieren !!!

Wie kann man eine verlorene Verbindung erkennen? Wie kann der Server-Verbindungen lšsen?

  • Bleiben immer so viele Verbindungen liegen? Tw. wird eine weiterer Aufruf hierdurch sogar blockiert?!
  • Zeitnahmedaten mit in die Daten aufnehmen!!! Verarbeiten der display-Funktionen.
  • Definition des Befehlssatzen in einer Struktur, die von beiden Seiten verwendet wird!
  • Verwenden von ROOT-Trees zum Abspeichern der Daten
  • Integration in Pbusdaemon / oder ein separates Programm, das vom Pbusdaemon aufgerufen wird?!
  • Display-Programm, das sich ebenfalls an den Server ankoppelt.

The recorder does not work with a connection started via ssh tunnel. The readout process at the mirrorpc's seem to have problems to connect to the proper recorder server?!

Class TsBackgroundReader

Every process started with fork() will exist as zombie as long as the main process will not use the function wait().

Try to use select() during waiting. Both the socket connection to the server and any key press can be detect much faster by this function. In the moment we have a small polling loop with a 1 second period. During the first tests it turned out that a socket connection is not properly released after the usage of select (use: netstat --ip).

Class TsCampaign
Separate between input and output file to enable extraction of data without changing the format!? -> May this can be solved easier without parsing the format ???
Class TsEvent
Implement saveAMFormat
Member TsEvent::dump (FILE *fout)
Use the class SltTime to decode the second fields!
Member TsEvent::loadHwFormatPixelData (Subrack *s, int page)
Add more arguments to control partial readout.
Class UnsignedInt64
Implement operators to make the handling comparable to standard data types
Class WGCommand

Implement timeout waiting for the device

Implement the missing commands