GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> EDS / V2-11-5 > eds / rad750


Interface   Data Structures   File List   Data Fields   Globals  

EDS_fw.h File Reference

Event Delivery Services, framework, interface. More...

#include <EDS/LCBV.h>
#include <EDS/EBF_siv.h>
#include <EDS/EDS_rsd.h>
#include <EDS/EDS_fwServices.h>

Classes

struct  _EDS_fwIxbInfo
 Derived information about the event that is can be shared between processor. More...
struct  _EDS_fwEvt
 These are the reserved data blocks used in the EDS_fwIxb. More...
union  _EDS_fwIxbBlk
 The pointer data block. More...
struct  _EDS_fwIxbSrc
 Static information about the nature of the data source controlled by this EDS framework. More...
struct  _EDS_fwIxbDst
 Static information about the nature of the data sinking controlled by this EDS framework. More...
struct  _EDS_fwIxb
 Encapsulates all the derived data structures associated with an event. More...

Defines

#define EDS_FW_MASK(_bitNumber)   (1 << (31 - (_bitNumber)))
 Creates the corresponding bit mask.

Typedefs

typedef enum _EDS_FW_OBJ_K EDS_FW_OBJ_K
 Typedef for enum _EDS_OBJ_K.
typedef enum _EDS_FW_OBJ_V EDS_FW_OBJ_V
 Typedef for enum _EDS_OBJ_V.
typedef enum _EDS_FW_OBJ_M EDS_FW_OBJ_M
 Typedef for enum _EDS_OBJ_M.
typedef enum _EDS_FW_K_POST EDS_FW_K_POST
 Typedef for enum _EDS_FW_K_POST.
typedef enum _EDS_FW_V_POST EDS_FW_V_POST
 Typedef for enum _EDS_FW_V_POST.
typedef enum _EDS_FW_M_POST EDS_FW_M_POST
 Typedef for enum _EDS_FW_M_POST.
typedef enum _EDS_FW_FN_V EDS_FW_FN_V
 Typedef for enum _EDS_FW_FN_V.
typedef enum _EDS_FW_FN_M EDS_FW_FN_M
 Typedef for enum _EDS_FW_FN_M.
typedef void *(* EDS_fwMemNew )(void *prm, unsigned int amount)
 Callback signature for the framework's allocator.
typedef void(* EDS_fwMemDelete )(void *prm, void *ptr, unsigned int amount)
 Callback signature for the memory deallocator.
typedef enum _EDS_FW_EVTQUE_K EDS_FW_EVTQUE_K
 Typedef for enum _EDS_FW_EVTQUE_K.
typedef struct _EDS_fwIxbInfo EDS_fwIxbInfo
 Typedef for EDS_fwIxbInfo.
typedef struct _EDS_fwEvt EDS_fwEvt
 Typedef for struct _EDS_fwEvt.
typedef union _EDS_fwIxbBlk EDS_fwIxbBlk
 Typedef for union _EDS_fwIxbBlk.
typedef unsigned int(* EDS_fwIxbObjConstructor )(void *ptr)
 Signature for constructing an Information Exchange objects.
typedef unsigned int(* EDS_fwIxbObjDestructor )(void *ptr)
 Signature 'for destructing' an Information Exchange objects.
typedef void(* EDS_fwIxbObjReset )(void *ptr)
 Signature for resetting an Information Exchange object.
typedef struct _EDS_fwIxbSrc EDS_fwIxbSrc
 Typedef for struct _EDS_fwIxbSrc.
typedef struct _EDS_fwIxbDst EDS_fwIxbDst
 Typedef for struct _EDS_fwIxbDst.
typedef struct _EDS_fwIxb EDS_fwIxb
 Typedef for struct _EDS_fwIxb.

Enumerations

enum  _EDS_FW_OBJ_K {
  EDS_FW_OBJ_K_ERR = 0,
  EDS_FW_OBJ_K_DIR = 1,
  EDS_FW_OBJ_K_ACD = 2,
  EDS_FW_OBJ_K_TKR = 3,
  EDS_FW_OBJ_K_CAL = 4,
  EDS_FW_OBJ_K_ACDC = 5,
  EDS_FW_OBJ_K_TKRC = 6,
  EDS_FW_OBJ_K_CALC = 7,
  EDS_FW_OBJ_K_CNT = 8
}
 Enumerates what the type of objects the framework manages. More...
enum  _EDS_FW_OBJ_V {
  EDS_FW_OBJ_V_ERR = 31 - EDS_FW_OBJ_K_ERR,
  EDS_FW_OBJ_V_DIR = 31 - EDS_FW_OBJ_K_DIR,
  EDS_FW_OBJ_V_ACD = 31 - EDS_FW_OBJ_K_ACD,
  EDS_FW_OBJ_V_TKR = 31 - EDS_FW_OBJ_K_TKR,
  EDS_FW_OBJ_V_CAL = 31 - EDS_FW_OBJ_K_CAL,
  EDS_FW_OBJ_V_ACDC = 31 - EDS_FW_OBJ_K_ACDC,
  EDS_FW_OBJ_V_TKRC = 31 - EDS_FW_OBJ_K_TKRC,
  EDS_FW_OBJ_V_CALC = 31 - EDS_FW_OBJ_K_CALC
}
 Enumerates the bit positions of the print objects. More...
enum  _EDS_FW_OBJ_M {
  EDS_FW_OBJ_M_ERR = (1 << EDS_FW_OBJ_V_ERR ),
  EDS_FW_OBJ_M_DIR = (1 << EDS_FW_OBJ_V_DIR ),
  EDS_FW_OBJ_M_ACD = (1 << EDS_FW_OBJ_V_ACD ),
  EDS_FW_OBJ_M_TKR = (1 << EDS_FW_OBJ_V_TKR ),
  EDS_FW_OBJ_M_CAL = (1 << EDS_FW_OBJ_V_CAL ),
  EDS_FW_OBJ_M_ACDC = (1 << EDS_FW_OBJ_V_ACDC ),
  EDS_FW_OBJ_M_TKRC = (1 << EDS_FW_OBJ_V_TKRC ),
  EDS_FW_OBJ_M_CALC = (1 << EDS_FW_OBJ_V_CALC ),
  EDS_FW_OBJ_M_ALL
}
 Enumerates the bit masks of the print objects. More...
enum  _EDS_FW_K_POST {
  EDS_FW_K_POST_0 = 0,
  EDS_FW_K_POST_1 = 1,
  EDS_FW_K_POST_2 = 2,
  EDS_FW_K_POST_3 = 3,
  EDS_FW_K_POST_CNT = 4
}
 Enumeration of the output posting queues/streams. More...
enum  _EDS_FW_V_POST {
  EDS_FW_V_POST_0 = 31 - EDS_FW_K_POST_0,
  EDS_FW_V_POST_1 = 31 - EDS_FW_K_POST_1,
  EDS_FW_V_POST_2 = 31 - EDS_FW_K_POST_2,
  EDS_FW_V_POST_3 = 31 - EDS_FW_K_POST_3
}
 Enumeration of the output posting queues/streams, right justified bit offset. More...
enum  _EDS_FW_M_POST {
  EDS_FW_M_POST_0 = 1 << EDS_FW_V_POST_0,
  EDS_FW_M_POST_1 = 1 << EDS_FW_V_POST_1,
  EDS_FW_M_POST_2 = 1 << EDS_FW_V_POST_2,
  EDS_FW_M_POST_3 = 1 << EDS_FW_V_POST_3
}
 Enumeration of the output posting queues/streams, in place masks. More...
enum  _EDS_FW_FN_V {
  EDS_FW_FN_V_NO_MORE = 0,
  EDS_FW_FN_V_DIR = 1,
  EDS_FW_FN_V_RSVD_2 = 2,
  EDS_FW_FN_V_RSVD_3 = 3,
  EDS_FW_FN_V_FIRST = 4,
  EDS_FW_FN_V_MID = 5,
  EDS_FW_FN_V_LAST = 6,
  EDS_FW_FN_V_STOP = 7,
  EDS_FW_FN_V_POST = 12,
  EDS_FW_FN_V_POST_3 = 12,
  EDS_FW_FN_V_POST_2 = 13,
  EDS_FW_FN_V_POST_1 = 14,
  EDS_FW_FN_V_POST_0 = 15
}
 The bit offsets of fate and need bits. More...
enum  _EDS_FW_FN_M {
  EDS_FW_FN_M_NO_MORE = (1 << EDS_FW_FN_V_NO_MORE),
  EDS_FW_FN_M_DIR = (1 << EDS_FW_FN_V_DIR),
  EDS_FW_FN_M_RSVD_2 = (1 << EDS_FW_FN_V_RSVD_2),
  EDS_FW_FN_M_RSVD_3 = (1 << EDS_FW_FN_V_RSVD_3),
  EDS_FW_FN_M_FIRST = (1 << EDS_FW_FN_V_FIRST),
  EDS_FW_FN_M_MID = (1 << EDS_FW_FN_V_MID),
  EDS_FW_FN_M_LAST = (1 << EDS_FW_FN_V_LAST),
  EDS_FW_FN_M_STOP = (1 << EDS_FW_FN_V_STOP),
  EDS_FW_FN_M_POST,
  EDS_FW_FN_M_POST_3 = (1 << EDS_FW_FN_V_POST_3),
  EDS_FW_FN_M_POST_2 = (1 << EDS_FW_FN_V_POST_2),
  EDS_FW_FN_M_POST_1 = (1 << EDS_FW_FN_V_POST_1),
  EDS_FW_FN_M_POST_0 = (1 << EDS_FW_FN_V_POST_0)
}
 The bit masks of fate and need bits.
enum  _EDS_FW_EVTQUE_K { EDS_FW_EVTQUE_K_EVT = 31 }
 Enumerates the names of the event queues. More...

Functions

int EDS_fwSizeof (void)
 Returns the size, in bytes, of and EDS_fw control structure.
void EDS_fwConstruct (EDS_fw *fw, EDS_fwMemNew memNew, EDS_fwMemDelete memDelete, void *memPrm)
 Initializes the specified EDS_fw structure.
void EDS_fwConstruct1 (EDS_fw *fw, EDS_fwMemNew memNew, EDS_fwMemDelete memDelete, void *memPrm, unsigned int origin, unsigned int cpu, unsigned int apidOffset)
 Initializes the specified EDS_fw structure. This is an expanded version of the construct that includes the data producer (origin) and the data processor (cpu).
int EDS_fwPostRegister (EDS_fw *fw, unsigned int idx, EDS_fwPostStartRtn start, EDS_fwPostWriteRtn write, EDS_fwPostNotifyRtn notify, EDS_fwPostFlushRtn flush, void *prm)
 Initializes the specified EDS_fw posting stream.
int EDS_fwPostServicesRegister (EDS_fw *fw, unsigned int idx, const EDS_fwPostServices *services, void *prm)
 Initializes the specified EDS_fw posting stream.
void EDS_fwFreeSet (EDS_fw *fw, LCBV_pktsRngFreeCb pktsFreeRtn, void *pktsFreePrm)
 Sets the packet freeing routine.
int EDS_fwIxbObjAdd (EDS_fw *fw, int object, int size, EDS_fwIxbObjConstructor construct, EDS_fwIxbObjDestructor destruct, EDS_fwIxbObjReset reset)
 Adds an object to the Information Exchange Block.
unsigned int EDS_fwIxbObjAllocate (EDS_fw *fw, unsigned int objects)
 Allocates any previously added (known) objects.
unsigned int EDS_fwDestruct (EDS_fw *fw)
 Destroys the EDS framework by unregistering all the registered handlers and destroying all objects.
int EDS_fwHandlerRegisterX1 (EDS_fw *fw, int priority, unsigned int objects, unsigned int needs, unsigned int result_size, EDS_fwHandlerProcessRtn process, EDS_fwHandlerAssociateRtn associate, EDS_fwHandlerStartRtn start, EDS_fwHandlerSelectRtn select, EDS_fwHandlerFlushRtn flush, EDS_fwHandlerDestructRtn destruct, void *prm)
 Routine to register a packet handler.
int EDS_fwHandlerServicesRegisterX1 (EDS_fw *fw, int priority, const EDS_fwHandlerServicesX1 *services, void *prm)
 Routine to register a packet handler using a service vector.
int EDS_fwHandlerRegister (EDS_fw *fw, int priority, unsigned int objects, unsigned int needs, unsigned int result_size, EDS_fwHandlerProcessRtn process, EDS_fwHandlerAssociateRtn associate, EDS_fwHandlerSelectRtn select, EDS_fwHandlerFlushRtn flush, EDS_fwHandlerDestructRtn destruct, void *prm)
 Routine to register a packet handler.
int EDS_fwHandlerServicesRegister (EDS_fw *fw, int priority, const EDS_fwHandlerServices *services, void *prm)
 Routine to register a packet handler using a service vector.
int EDS_fwHandlerUnregister (EDS_fw *fw, int priority)
 Routine to unregister a packet processor.
unsigned int EDS_fwHandlerChange (EDS_fw *fw, unsigned int targets, unsigned int newState)
 Changes the enabled/disabled state of the select targets.
int EDS_fwHandlerProcess (EDS_fw *fw, unsigned int edw, EBF_pkt *pkt)
 This is the LCB event callback handler.
unsigned int EDS_fwHandlerStart (EDS_fw *fw, unsigned int list, int reason, unsigned int run_id, unsigned int startTime, unsigned int mode)
 Informs the specified list of handlers of the start of a run.
unsigned int EDS_fwHandlerSelect (EDS_fw *fw, unsigned int targets, unsigned int mode)
 Selects a new mode.
unsigned int EDS_fwHandlerAssociate (EDS_fw *fw, unsigned int targets, unsigned int mode, unsigned int configuration)
 Associates a configuration with a mode.
unsigned int EDS_fwHandlerFlush (EDS_fw *fw, unsigned int targets, int reason)
 This flushes the output of the specified list of handlers.
unsigned int EDS_fwPostChange (EDS_fw *fw, unsigned int list, unsigned int newState)
 Changes the state of the enable/disable post list.
unsigned int EDS_fwPostStart (EDS_fw *fw, unsigned int list, int reason, unsigned int run_id, unsigned int startTime, unsigned int mode, unsigned int hw_key, unsigned int cfg_key)
 Sets the parameters associated with a new run.
unsigned int EDS_fwPostResume (EDS_fw *fw, unsigned int list, int reason)
 Resumes after a pause.
unsigned int EDS_fwPostFlush (EDS_fw *fw, unsigned int list, int reason)
 Selects a new mode.
unsigned int EDS_fwPostNotify (EDS_fw *fw, unsigned int list, unsigned int mode)
 Notifies the list of post routines of a change in the configuraion.
int EDS_fwEvtQueSet (EDS_fw *fw, unsigned int que_id, FORK_que *que)
 Sets the FORK queues that feed the event delivery task. This is used to send synchronized messages to the event delivery task.
FORK_que * EDS_fwEvtQueGet (EDS_fw *fw, unsigned int que_id)
 Returns a poitner to the FORK queues that feed the event delivery task. This is used to send synchronized messages to the event delivery task.
EDS_fwIxbEDS_fwIxbLocate (EDS_fw *fw)
 Locates the EDS_fwIxb structure.


Detailed Description

Event Delivery Services, framework, interface.

Author:
JJRussell - russell@slac.stanford.edu
   CVS $Id: EDS_fw.h,v 1.12 2011/03/25 22:16:55 russell Exp $


Define Documentation

#define EDS_FW_MASK ( _bitNumber   )     (1 << (31 - (_bitNumber)))

Creates the corresponding bit mask.

Returns:
The bit mask corresponding to the specified _bitNumber
Parameters:
_bitNumber The bit number
All bit masks in the EDS framework are stored big endian style; that is the most significant bit is labelled as bit 0. This macro should be used to avoid the confusion and errors when creating bit masks from bit numbers.

Referenced by addIxbObj(), EDS_fwHandlerAssociate(), EDS_fwHandlerFlush(), EDS_fwHandlerRegisterX1(), EDS_fwHandlerStart(), EDS_fwHandlerUnregister(), EDS_fwPostFlush(), EDS_fwPostNotify(), EDS_fwPostRegister(), and EDS_fwPostStart().


Typedef Documentation

Typedef for enum _EDS_FW_FN_M.

This enumeration should be used when returning a value from a handler

Typedef for enum _EDS_FW_FN_V.

This enumeration should be used when returning a value from a handler

Typedef for enum _EDS_FW_K_POST.

This enumeration should be used when specifying the index to EDS_fwPostRegister.

Typedef for enum _EDS_FW_M_POST.

This enumeration should be used when specifing the target list mask to EDS_fwStreamFlush.

Typedef for enum _EDS_OBJ_M.

Typedef for enum _EDS_FW_OBJ_M.

Typedef for enum _EDS_OBJ_V.

Typedef for enum _EDS_FW_OBJ_V.

Typedef for enum _EDS_FW_V_POST.

This enumeration should be used when referring to the bits in the target list to EDS_fwStreamFlush.

Typedef for struct _EDS_fwIxb.

This structure consists of some management variables and a list of 32 generic pointers. These pointers can be used by various processors to reference data that needs to be shared amongst processors. Typically one processor would write the data structure and other processors would reference it. This information may be filled in
  1. packet-by-packet
  2. event-by-event
  3. statically seeded at initialization time

The implementation says nothing about how these pointers are to be used, although the first 8 or so have been spoken for. These are used to hold the unpacked event and calibration constants. The only compact is between the writer and the readers.

Typedef for EDS_fwIxbInfo.

This is convenience information computed by the framework's event processing routine. It is deemed commonly useful and cheap enough that it is provided for every event.
There are two sequence numbers in this structure
  1. The ESW extended sequence number
  2. The EDS sequence number.

The latter is just the count of the number of events seen by the EDS_fwProcess routine. The GEM extended sequence number is derived from the 17-bit sequence number in the Event Summary Word. Since this number is only 17 bits, it will rollover every 2**17 events. When EDS detects this rollover (by virtue of the fact that the current value is less than the current value), it adds 1 << 18. This is reasonably safe, but can get fouled up if more than 2**17 events pass between successive events.
Note that while the sequence number is dense, the extended sequence number may not be. That is because events may be being dispatched round-robin style amongst the event processsing CPUs.

unsigned int(* EDS_fwIxbObjConstructor)(void *ptr)

Signature for constructing an Information Exchange objects.

Returns:
Status
Parameters:
ptr A pointer to the object to construct

unsigned int(* EDS_fwIxbObjDestructor)(void *ptr)

Signature 'for destructing' an Information Exchange objects.

Returns:
Status
Parameters:
ptr A pointer to the object to destruct

void(* EDS_fwIxbObjReset)(void *ptr)

Signature for resetting an Information Exchange object.

Returns:
Status
Parameters:
ptr A pointer to the object to reset

void(* EDS_fwMemDelete)(void *prm, void *ptr, unsigned int amount)

Callback signature for the memory deallocator.

Parameters:
prm Arbitrary user parameter
ptr Pointer to the memory to be deallocated
amount The number of bytes to be deallocated

typedef void *(* EDS_fwMemNew)(void *prm, unsigned int amount)

Callback signature for the framework's allocator.

Returns:
Pointer to the allocated memory
Parameters:
prm Arbitrary user parameter
amount The number of bytes being requested


Enumeration Type Documentation

Enumerates the names of the event queues.

Enumerator:
EDS_FW_EVTQUE_K_EVT  Que that events are delivered on

The bit offsets of fate and need bits.

Enumerator:
EDS_FW_FN_V_NO_MORE  Don't send the processor any more packets on this event (dynamic only)
EDS_FW_FN_V_DIR  Processor needs a directory composed
EDS_FW_FN_V_RSVD_2  Reserved
EDS_FW_FN_V_RSVD_3  Reserved
EDS_FW_FN_V_FIRST  Processor wants to see the first packet in a sequence
EDS_FW_FN_V_MID  Processor wants to see the middle packets in a sequence
EDS_FW_FN_V_LAST  Processor wants to see the last packet in a sequence
EDS_FW_FN_V_STOP  Stop sending events (dynamic only)
EDS_FW_FN_V_POST  Output processors
EDS_FW_FN_V_POST_3  Post event to stream 3
EDS_FW_FN_V_POST_2  Post event to stream 2
EDS_FW_FN_V_POST_1  Post event to stream 1
EDS_FW_FN_V_POST_0  Post event to stream 0

Enumeration of the output posting queues/streams.

Enumerator:
EDS_FW_K_POST_0  Posting que/stream 0
EDS_FW_K_POST_1  Posting que/stream 1
EDS_FW_K_POST_2  Posting que/stream 2
EDS_FW_K_POST_3  Posting que/stream 3
EDS_FW_K_POST_CNT  Count of posting ques/streams

Enumeration of the output posting queues/streams, in place masks.

Enumerator:
EDS_FW_M_POST_0  Posting que/stream 0
EDS_FW_M_POST_1  Posting que/stream 1
EDS_FW_M_POST_2  Posting que/stream 2
EDS_FW_M_POST_3  Posting que/stream 3

Enumerates what the type of objects the framework manages.

Enumerator:
EDS_FW_OBJ_K_ERR  ID for the ERR contribution
EDS_FW_OBJ_K_DIR  ID for the Directory
EDS_FW_OBJ_K_ACD  ID for the ACD
EDS_FW_OBJ_K_TKR  ID for the TKR
EDS_FW_OBJ_K_CAL  ID for the CAL
EDS_FW_OBJ_K_ACDC  ID for the ACD calibration constants
EDS_FW_OBJ_K_TKRC  ID for the TKR calibration constants
EDS_FW_OBJ_K_CALC  ID for the CAL calibration constants
EDS_FW_OBJ_K_CNT  Count of the number EDS fw objects

Enumerates the bit masks of the print objects.

Bit masks for the managed objects.

Enumerator:
EDS_FW_OBJ_M_ERR  Mask for the ERR contribution
EDS_FW_OBJ_M_DIR  Mask for the directory
EDS_FW_OBJ_M_ACD  Mask for the ACD
EDS_FW_OBJ_M_TKR  Mask for the TKR
EDS_FW_OBJ_M_CAL  Mask for the CAL
EDS_FW_OBJ_M_ACDC  Mask for the ACD calibration constants
EDS_FW_OBJ_M_TKRC  Mask for the TKR calibration constants
EDS_FW_OBJ_M_CALC  Mask for the CAL calibration constants
EDS_FW_OBJ_M_ALL  Mask of all EDS framework objects

Enumerates the bit positions of the print objects.

Bit offsets for the managed objects.

Enumerator:
EDS_FW_OBJ_V_ERR  Bit offset for the ERR contribution
EDS_FW_OBJ_V_DIR  Bit offset for the DIR
EDS_FW_OBJ_V_ACD  Bit offset for the GEM
EDS_FW_OBJ_V_TKR  Bit offset for the TKR
EDS_FW_OBJ_V_CAL  Bit offset for the CAL
EDS_FW_OBJ_V_ACDC  Bit offset for the ACD calibration constants
EDS_FW_OBJ_V_TKRC  Bit offset for the TKR calibration constants
EDS_FW_OBJ_V_CALC  Bit offset for the CAL calibration constants

Enumeration of the output posting queues/streams, right justified bit offset.

Enumerator:
EDS_FW_V_POST_0  Posting que/stream 0
EDS_FW_V_POST_1  Posting que/stream 1
EDS_FW_V_POST_2  Posting que/stream 2
EDS_FW_V_POST_3  Posting que/stream 3


Function Documentation

void EDS_fwConstruct ( EDS_fw fw,
EDS_fwMemNew  memNew,
EDS_fwMemDelete  memDelete,
void *  memPrm 
)

Initializes the specified EDS_fw structure.

Parameters:
fw The EDS_fw structure to initialize
memNew Memory allocator
memDelete Memory deallocator
memPrm Memory context handle

References EDS_fwConstruct1().

void EDS_fwConstruct1 ( EDS_fw fw,
EDS_fwMemNew  memNew,
EDS_fwMemDelete  memDelete,
void *  memPrm,
unsigned int  origin,
unsigned int  cpu,
unsigned int  apidOffset 
)

Initializes the specified EDS_fw structure. This is an expanded version of the construct that includes the data producer (origin) and the data processor (cpu).

Parameters:
fw The EDS_fw structure to initialize
memNew Memory allocator
memDelete Memory deallocator
memPrm Memory context handle
origin The data production origin. This is typically a small integer describing the entity (for example the LAT, the GLEAM Monte Carlo program) that produced the data. The value -1 is reserved for an unknown.producer.
cpu The cpu identifier. This is typically a small integer describing the CPU that processed the data. -1 is reserved for an unspecified CPU.
apidOffset An offset (0-4) that is added to an APID base value in order to create a CPU unique APID.

References _EDS_fwIxbDst::apid_offset, _EDS_fwIxbSrc::cpu, _EDS_fwMem::delete, _EDS_fwIxb::dst, EBF_sivInit(), _EDS_fwLists::free, initIxbObjTbl(), _EDS_fw::ixb, _EDS_fw::lists, _EDS_fw::mem, memDefaultDelete(), memDefaultNew(), _EDS_fwMem::new, _EDS_fwIxbSrc::origin, _EDS_fwMem::prm, _EDS_fw::siv, _EDS_fwIxb::src, and _EDS_fw::tbl.

Referenced by EDS_fwConstruct().

unsigned int EDS_fwDestruct ( EDS_fw fw  ) 

Destroys the EDS framework by unregistering all the registered handlers and destroying all objects.

Returns:
The OR of the bit mask of objects or handlers that failed being destroyed (this is not real useful in programming, but could be useful in helping debug.
Parameters:
fw The framework to destroy

References deallocateIxb(), destroyHandlers(), _EDS_fwLists::free, _EDS_fw::handlers, _EDS_fw::ixb, _EDS_fw::lists, _EDS_fw::mem, and _EDS_fw::tbl.

FORK_que* EDS_fwEvtQueGet ( EDS_fw fw,
unsigned int  que_id 
)

Returns a poitner to the FORK queues that feed the event delivery task. This is used to send synchronized messages to the event delivery task.

Return values:
!= NULL, The fork que
== NULL, Either the FORK_que requested FORK que has not been set or que_id is out-of-range (0-31)
Parameters:
fw The EDS framework structure
que_id The que id, 0-31, see the enum EDS_FW_EVTQUE_K for the symbolic names of these queues.

References _EDS_fwSynchCtx::ques, and _EDS_fw::synch.

int EDS_fwEvtQueSet ( EDS_fw fw,
unsigned int  que_id,
FORK_que *  que 
)

Sets the FORK queues that feed the event delivery task. This is used to send synchronized messages to the event delivery task.

Return values:
0,Success 
-1,Failure,\a que_id is out-of-range (0-31)
Parameters:
fw The EDS framework structure
que_id The que id, 0-31, see the enum EDS_FW_EVTQUE_K for the symbolic names of these queues.
que The FORK que

References _EDS_fwSynchCtx::ques, and _EDS_fw::synch.

void EDS_fwFreeSet ( EDS_fw fw,
LCBV_pktsRngFreeCb  pktsFreeRtn,
void *  pktsFreePrm 
)

Sets the packet freeing routine.

Parameters:
fw The EDS_fw structure to initialize
pktsFreeRtn Routine to free the packet
pktsFreePrm Parameter to the free routine.

References _EDS_fw::free, _EDS_fwPktFree::prm, and _EDS_fwPktFree::rtn.

unsigned int EDS_fwHandlerAssociate ( EDS_fw fw,
unsigned int  targets,
unsigned int  mode,
unsigned int  configuration 
)

Associates a configuration with a mode.

Returns:
A bit map of those handlers reporting failure
Parameters:
fw The EDS_fw structure
targets The target list, specified as a bit mask, of those handlers to set the new mode in
mode The mode, passed through to the user's associate routine.
configuration The index of the configuration to associate with the specified mode, passed through to the user's associate routine.

References _EDS_fwHandlerRegisteredServices::associate, _EDS_fwLists::associate, EDS_FW_MASK, _EDS_fw::handlers, _EDS_fw::lists, _EDS_fwHandler::prm, and _EDS_fwHandler::services.

unsigned int EDS_fwHandlerChange ( EDS_fw fw,
unsigned int  targets,
unsigned int  newState 
)

Changes the enabled/disabled state of the select targets.

Returns:
The set of previous enabled targets
Parameters:
fw The framework handle
targets A bit mask of the targets.
newState A bit mask of the new state (0 = disable, 1 = enabled))
This operation changes the state of only the handler targets selected by a 1 bit in the target mask, targets. The state is changed to either enabled or disabled depending on whether the corresponding bit in new is clear (DISABLED) or set (ENABLED). This operation is done under a lock so that it is indivisible.

References _EDS_fwLists::enabled, _EDS_fwLists::free, _EDS_fwFateNeeds::handlers, _EDS_cfgInfo::key, _EDS_fw::lists, _EDS_fw::needs, needs_refresh(), and _EDS_fwFateNeeds::permanent.

Referenced by EDS_fwHandlerUnregister().

unsigned int EDS_fwHandlerFlush ( EDS_fw fw,
unsigned int  targets,
int  reason 
)

This flushes the output of the specified list of handlers.

Returns:
A bit map of those handlers reporting failure
Parameters:
fw The EDS_fw structure
targets The target list, specified as a bit mask, of those handlers to flush
reason The reason flush is being called. This is just passed through to the user's flush routine

References EDS_FW_MASK, _EDS_fwHandlerRegisteredServices::flush, _EDS_fwLists::flush, _EDS_fw::handlers, _EDS_fw::lists, _EDS_fwHandler::prm, and _EDS_fwHandler::services.

int EDS_fwHandlerProcess ( EDS_fw fw,
unsigned int  edw,
EBF_pkt pkt 
)

This is the LCB event callback handler.

Returns:
The fate of the event
Parameters:
fw The control structure
edw The Event Descriptor Word
pkt The packet to process
What's going on here
While there is not much code here, the logic is involved. The complications are mainly due to packetization and the desire to avoid doing certain operations, such as forming a directory, for as long as possible.
Each register callback has determined whether, by default, it wishes to be called back on
  • The first packet in a list
  • The middle packets of a list
  • The last packets of a list

Static vs Dynamic Properties
This default can be altered by the callback routine returning the code EDS_FW_FN_M_NO_MORE, at anytime (well except on the last packet where it makes no logical sense). The control structure also contains a default setting for the global resources needed. While a callback routine can add to this set, currently it cannot subtract from this set. If the routine involves any dynamics, it is best to not declare the need for these resources during registration, but, rather to request them in the return code.
A good example is the standard filter. For a large fraction of the events, the filter can make its decision using only the GEM contribution. For the remainder it needs a directory to help decode the event. Therefore, it should not state that it needs a directory to do its work when registering. Rather, on the first packet it should state whether it needs a directory or not. If it does, one will be formed and on the last packet in the sequence it will be passed in. Thus, during registration, the filter would request
  • Call me on the first packet of the event
  • Call me on the last packet of the list
    If the event is rejected on the first callback, then it should return the EDS_FW_FN_NO_MORE code. If the event is accepted on the first callback, it should request EDS_FW_FN_M_DIR.

References _EDS_fwLists::active, _EDS_fwFateNeeds::active, _EDS_fwIxb::blk, _EDS_fwEvt::dir, _EDS_fwIxbObjTbl::dscs, EBF__edwPktSize(), EBF__evtSequence(), EBF__pktAdvance(), EBF__sivIsFirst(), EBF__sivIsLast(), EBF__sivIsLastSeq(), EBF__sivIsOnly(), EBF_dirCompose(), EBF_sivUpdate(), EDS_FW_FN_V_POST, EDS_FW_K_POST_CNT, EDS_FW_OBJ_M_DIR, _EDS_fwPostCtl::enabled, _EDS_fwLists::enabled, _EDS_fwIxbBlk::evt, _EDS_fwIxbInfo::evt, _EDS_fw::free, _EDS_fw::handlers, _EDS_fwIxb::info, _EDS_fw::ixb, LCBV_PKT_FATE_M_ABORT, LCBV_PKT_FATE_M_NO_FREE, _EDS_fw::lists, _EDS_fw::needs, _EDS_fwIxbInfo::npkts, _EDS_fwFateNeeds::permanent, _EDS_fwLists::phases, _EDS_fwPktFree::pkt, _EDS_fw::post, _EDS_fwPostCtl::posters, _EDS_fwPktFree::prm, _EDS_fwPoster::prm, _EDS_fwHandler::prm, _EDS_fwHandlerRegisteredServices::process, _EDS_fwIxbBlk::ptrs, _EDS_fwIxbObjDsc::reset, _EDS_fwIxbObjTbl::resettable, _EDS_fwPktFree::rtn, _EDS_fwPoster::service, _EDS_fwHandler::services, _EDS_fw::siv, _EDS_fwIxbInfo::size, _EDS_fw::tbl, _EDS_fwIxb::valid, _EDS_fwPostServices::write, _EDS_fwIxbInfo::xcount, and _EDS_fwIxbInfo::xsequence.

int EDS_fwHandlerRegister ( EDS_fw fw,
int  priority,
unsigned int  objects,
unsigned int  needs,
unsigned int  result_size,
EDS_fwHandlerProcessRtn  process,
EDS_fwHandlerAssociateRtn  associate,
EDS_fwHandlerSelectRtn  select,
EDS_fwHandlerFlushRtn  flush,
EDS_fwHandlerDestructRtn  destruct,
void *  prm 
)

Routine to register a packet handler.

Returns:
The priority of the handler registered or -1 on failure
Parameters:
fw The framework's control structure
priority The requested priority of the handler. If this is specified as
  • 0-31, then this absolute priority will be used, if it is available. While there is no restriction on this number, other than it is between 0-31, the priorities 0-7 are set aside as dedicated to absolute priorities
  • -1, then the priority will be allocated as the highest available priority.
objects A bit list of the event objects (ACD unpack structure DIR structure, see EDS_FW_OBJ_M) that this processor needs. If this resource has not yet been allocated by a previous processor, then this call will allocate them. Note that this routine treats this request exactly as is. That is, it does not decide that because one has requested the TKR to be unpacked, that this implies one needs a directory structure. If the caller wishes to have a resource allocated on his behalf, the user must specify it.
needs This is from the list EDS_FW_FN_M. It includes the these important pieces
  • EDS_FW_FN_M_FIRST, need to be called back on the first packet of an event. This call back will not have a directory structure filled, since this cannot be completed until the last packet has been seen
  • EDS_FW_FN_M_MID, need to be called back for the middle packets of a sequence. While this is rare, some testing programs use this feature. In the case of only one packet in the event, there is no middle packet.
  • EDS_FW_FN_M_LAST, need to be called back on the last packet of an event. This callback may have the directory information filled, but, unless this processor has explicitly requested it, it should not count on it.
  • EDS_FW_FN_M_POST_x, this processor needs to have the posting routine(s) called. This is also rare, since this value is usually dynamically specified.(x = [0, EDS_FW_K_POST_CNT)
  • EDS_FW_FN_M_DIR, this processor needs a directory to do its work. The directory is not completed until the last packet of a sequence has been seen. In the case that an event consists of one and only on packet, the processor may get called back twice, once if he has specified EDS_FW_FN_M_FIRST and the second if he has specified EDS_FW_FN_M_LAST. Typically if a user always needs a directory he would specify EDS_FW_FN_M_DIR and EDS_FW_FN_M_LAST.
result_size Size, in bytes, of the handler's result. An area of this size will be reserved in the Ixb.
prm Arbitrary user parameter passed to the processor and destructor
process The packet processing routine
associate Routine to associate a configuration with a mode
select Routine to selects the mode
flush The packet handler's flush routine
destruct The handler's destructor. This is called on during framework deletion and unregisteration
Warning:
This is an obsolete routine

References EDS_fwHandlerRegisterX1().

int EDS_fwHandlerRegisterX1 ( EDS_fw fw,
int  priority,
unsigned int  objects,
unsigned int  needs,
unsigned int  result_size,
EDS_fwHandlerProcessRtn  process,
EDS_fwHandlerAssociateRtn  associate,
EDS_fwHandlerStartRtn  start,
EDS_fwHandlerSelectRtn  select,
EDS_fwHandlerFlushRtn  flush,
EDS_fwHandlerDestructRtn  destruct,
void *  prm 
)

Routine to register a packet handler.

Returns:
The priority of the handler registered or -1 on failure
Parameters:
fw The framework's control structure
priority The requested priority of the handler. If this is specified as
  • 0-31, then this absolute priority will be used, if it is available. While there is no restriction on this number, other than it is between 0-31, the priorities 0-7 are set aside as dedicated to absolute priorities
  • -1, then the priority will be allocated as the highest available priority.
objects A bit list of the event objects (ACD unpack structure DIR structure, see EDS_FW_OBJ_M) that this processor needs. If this resource has not yet been allocated by a previous processor, then this call will allocate them. Note that this routine treats this request exactly as is. That is, it does not decide that because one has requested the TKR to be unpacked, that this implies one needs a directory structure. If the caller wishes to have a resource allocated on his behalf, the user must specify it.
needs This is from the list EDS_FW_FN_M. It includes the these important pieces
  • EDS_FW_FN_M_FIRST, need to be called back on the first packet of an event. This call back will not have a directory structure filled, since this cannot be completed until the last packet has been seen
  • EDS_FW_FN_M_MID, need to be called back for the middle packets of a sequence. While this is rare, some testing programs use this feature. In the case of only one packet in the event, there is no middle packet.
  • EDS_FW_FN_M_LAST, need to be called back on the last packet of an event. This callback may have the directory information filled, but, unless this processor has explicitly requested it, it should not count on it.
  • EDS_FW_FN_M_POST_x, this processor needs to have the posting routine(s) called. This is also rare, since this value is usually dynamically specified.(x = [0, EDS_FW_K_POST_CNT)
  • EDS_FW_FN_M_DIR, this processor needs a directory to do its work. The directory is not completed until the last packet of a sequence has been seen. In the case that an event consists of one and only on packet, the processor may get called back twice, once if he has specified EDS_FW_FN_M_FIRST and the second if he has specified EDS_FW_FN_M_LAST. Typically if a user always needs a directory he would specify EDS_FW_FN_M_DIR and EDS_FW_FN_M_LAST.
result_size Size, in bytes, of the handler's result. An area of this size will be reserved in the Ixb.
prm Arbitrary user parameter passed to the processor and destructor
process The packet processing routine
associate Routine to associate a configuration with a mode
start Routine to handle a start run
select Routine to selects the mode
flush The packet handler's flush routine
destruct The handler's destructor. This is called on during framework deletion and unregisteration

References allocateIxb(), _EDS_fwHandlerRegisteredServices::associate, _EDS_fwLists::associate, _EDS_fw::cfg, _EDS_fwHandlerRegisteredServices::destruct, _EDS_rsdTbl::dscs, EDS_CFG_TYPE_K_UNKNOWN, EDS_FW_MASK, _EDS_fwHandlerRegisteredServices::flush, _EDS_fwLists::flush, _EDS_fwLists::free, _EDS_fwFateNeeds::handlers, _EDS_fw::handlers, _EDS_rsdDsc::id, _EDS_fwHandlerCfgs::infos, _EDS_fw::ixb, _EDS_cfgInfo::key, _EDS_rsdDsc::len, _EDS_fw::lists, _EDS_fw::mem, _EDS_fw::needs, _EDS_fwHandler::needs, _EDS_fwMem::new, _EDS_fwHandler::objects, _EDS_fwLists::phases, _EDS_fwMem::prm, _EDS_fwHandler::prm, _EDS_fwHandlerRegisteredServices::process, _EDS_rsdDsc::ptr, _EDS_fwIxb::rsd, _EDS_rsdDsc::sb, _EDS_fwHandlerRegisteredServices::select, _EDS_fwLists::select, _EDS_fwHandler::services, _EDS_fwHandlerRegisteredServices::start, _EDS_fwLists::start, _EDS_fw::tbl, _EDS_cfgInfo::type, and _EDS_rsdTbl::valid.

Referenced by EDS_fwHandlerRegister(), EDS_fwHandlerServicesRegister(), and EDS_fwHandlerServicesRegisterX1().

unsigned int EDS_fwHandlerSelect ( EDS_fw fw,
unsigned int  targets,
unsigned int  mode 
)

Selects a new mode.

Returns:
A bit map of those handlers reporting failure
Parameters:
fw The EDS_fw structure
targets The target list, specified as a bit mask, of those handlers to set the new mode in
mode The new mode, passed through to the user's set routine

References _EDS_fw::cfg, _EDS_fw::handlers, _EDS_fwHandlerCfgs::infos, _EDS_fw::lists, _EDS_fwHandler::prm, _EDS_fwHandlerRegisteredServices::select, _EDS_fwLists::select, and _EDS_fwHandler::services.

int EDS_fwHandlerServicesRegister ( EDS_fw fw,
int  priority,
const EDS_fwHandlerServices services,
void *  prm 
)

Routine to register a packet handler using a service vector.

Returns:
The priority of the handler registered or -1 on failure
Parameters:
fw The framework's control structure
priority The requested priority of the handler. If this is specified as
  • 0-31, then this absolute priority will be used, if it is available. While there is no restriction on this number, other than it is between 0-31, the priorities 0-7 are set aside as dedicated to absolute priorities
  • -1, then the priority will be allocated as the highest available priority.
services The services structure
prm Arbitrary user parameter passed to the processor and destructor
Warning:
This is an obsolete routine

References _EDS_fwHandlerServices::associate, _EDS_fwHandlerServices::destruct, EDS_fwHandlerRegisterX1(), _EDS_fwHandlerServices::flush, _EDS_fwHandlerServices::needs, _EDS_fwHandlerServices::objects, _EDS_fwHandlerServices::process, _EDS_fwHandlerServices::rsizeof, and _EDS_fwHandlerServices::select.

int EDS_fwHandlerServicesRegisterX1 ( EDS_fw fw,
int  priority,
const EDS_fwHandlerServicesX1 services,
void *  prm 
)

Routine to register a packet handler using a service vector.

Returns:
The priority of the handler registered or -1 on failure
Parameters:
fw The framework's control structure
priority The requested priority of the handler. If this is specified as
  • 0-31, then this absolute priority will be used, if it is available. While there is no restriction on this number, other than it is between 0-31, the priorities 0-7 are set aside as dedicated to absolute priorities
  • -1, then the priority will be allocated as the highest available priority.
services The services structure
prm Arbitrary user parameter passed to the processor and destructor

References _EDS_fwHandlerServicesX1::associate, _EDS_fwHandlerServicesX1::destruct, EDS_fwHandlerRegisterX1(), _EDS_fwHandlerServicesX1::flush, _EDS_fwHandlerServicesX1::needs, _EDS_fwHandlerServicesX1::objects, _EDS_fwHandlerServicesX1::process, _EDS_fwHandlerServicesX1::rsizeof, _EDS_fwHandlerServicesX1::select, and _EDS_fwHandlerServicesX1::start.

unsigned int EDS_fwHandlerStart ( EDS_fw fw,
unsigned int  targets,
int  reason,
unsigned int  run_id,
unsigned int  startTime,
unsigned int  mode 
)

Informs the specified list of handlers of the start of a run.

Returns:
A bit map of those handlers reporting failure
Parameters:
fw The EDS_fw structure
targets The target list, specified as a bit mask, of those handlers to send the start run to
reason Suggested use is to indicate why the run is being started
run_id Suggested use is to identify the block of events between when EDS_fwHandlerStart is called and EDS_fwHandlerFlush is called with a stop reason
startTime The run start time rounded to the nearest second
mode This must be the previously selected, by EDS_fwHandlerSelect, running mode.

References EDS_FW_MASK, _EDS_fw::handlers, _EDS_fw::lists, _EDS_fwHandler::prm, _EDS_fwHandler::services, _EDS_fwHandlerRegisteredServices::start, and _EDS_fwLists::start.

int EDS_fwHandlerUnregister ( EDS_fw fw,
int  priority 
)

EDS_fwIxb* EDS_fwIxbLocate ( EDS_fw fw  ) 

Locates the EDS_fwIxb structure.

Returns:
Pointer to the EDS_fwIxb structure
Parameters:
fw The framework's control structure

References _EDS_fw::ixb.

int EDS_fwIxbObjAdd ( EDS_fw fw,
int  object,
int  size,
EDS_fwIxbObjConstructor  construct,
EDS_fwIxbObjDestructor  destruct,
EDS_fwIxbObjReset  reset 
)

Adds an object to the Information Exchange Block.

Return values:
If postive, the index of the added object
If negative, failure
Parameters:
fw The framework's control structure
object The index of the object to add
size The size, in bytes, of the object
construct The constructor routine (if any)
destruct The destructor routine (if any)
reset The reset routine (if any)

References addIxbObj(), and _EDS_fw::tbl.

unsigned int EDS_fwIxbObjAllocate ( EDS_fw fw,
unsigned int  objects 
)

Allocates any previously added (known) objects.

Returns:
Bit mask of objects that failed to be allocated
Parameters:
fw The framework's control structure
objects The list of objects to allocate

References allocateIxb(), _EDS_fw::ixb, _EDS_fw::mem, and _EDS_fw::tbl.

unsigned int EDS_fwPostChange ( EDS_fw fw,
unsigned int  list,
unsigned int  newState 
)

Changes the state of the enable/disable post list.

Returns:
A bit map of the previous state
Parameters:
fw The EDS_fw structure
list The target list of posting routine, specified as a right justified bit mask
newState The new enable/disable state of those post ques/streams specified by list

References _EDS_fwPostCtl::enabled, _EDS_fwPostCtl::installed, _EDS_cfgInfo::key, and _EDS_fw::post.

unsigned int EDS_fwPostFlush ( EDS_fw fw,
unsigned int  list,
int  reason 
)

Selects a new mode.

Returns:
A bit map of those posting reporting failure
Parameters:
fw The EDS_fw structure
list The target list of posting routine, specified as a bit mask
reason The reason for flushing

References EDS_FW_MASK, _EDS_fwPostCtl::enabled, _EDS_fwPostServices::flush, _EDS_fw::post, _EDS_fwPostCtl::posters, and _EDS_fwPoster::service.

unsigned int EDS_fwPostNotify ( EDS_fw fw,
unsigned int  list,
unsigned int  mode 
)

Notifies the list of post routines of a change in the configuraion.

Returns:
A bit map of those notification routines reporting failure
Parameters:
fw The EDS_fw structure
list The target list of posting routines, specified as a bit mask
mode The new mode

References _EDS_rsdTbl::active, _EDS_fw::cfg, _EDS_rsdTbl::dscs, EDS_FW_MASK, _EDS_fwLists::enabled, _EDS_fwPostCtl::enabled, _EDS_cfgInfo::idx, _EDS_fwHandlerCfgs::infos, _EDS_fw::ixb, _EDS_rsdDsc::len, _EDS_fw::lists, _EDS_rsdTbl::nbytes, _EDS_fwPostServices::notify, _EDS_fwPostCtl::notify, _EDS_fw::post, _EDS_fwPostCtl::posters, _EDS_fwIxb::rsd, _EDS_fwPoster::service, and _EDS_rsdTbl::valid.

int EDS_fwPostRegister ( EDS_fw fw,
unsigned int  idx,
EDS_fwPostStartRtn  start,
EDS_fwPostWriteRtn  write,
EDS_fwPostNotifyRtn  notify,
EDS_fwPostFlushRtn  flush,
void *  prm 
)

Initializes the specified EDS_fw posting stream.

Returns:
0, if successful, -1 if which is not between 0 and 3 inclusive
Parameters:
fw The EDS_fw structure to initialize
idx Which post routine (0-3 inclusive)
start Routine to start (or more accurately) prepare a post stream to receive events. This routine may be specified as NULL.
write Routine to write the event to the post stream. This routine may not be specfied as NULL.
notify Routine to notify the post stream when a change to the configuration has occured. This routine may be specified as NULL.
flush Routine to flush the post stream. This routine may not be specified as NULL.
prm Parameter to the post routine

References EDS_FW_MASK, _EDS_fwPostServices::flush, _EDS_fwPostCtl::installed, _EDS_fwPostServices::notify, _EDS_fwPostCtl::notify, _EDS_fw::post, _EDS_fwPostCtl::posters, _EDS_fwPoster::prm, _EDS_fwPoster::service, _EDS_fwPostServices::start, _EDS_fwPostCtl::start, and _EDS_fwPostServices::write.

Referenced by EDS_fwPostServicesRegister().

unsigned int EDS_fwPostResume ( EDS_fw fw,
unsigned int  list,
int  reason 
)

Resumes after a pause.

Returns:
A bit map of those posting streams reporting failure.
Parameters:
fw The EDS_fw structure
list The target list of posting routine, specified as a bit mask
reason Suggested use is to indicate why the post stream is being resumed
This is really just a convenience routine, calling EDS_fwPostStart with arguments appropriate for a resume.

References EDS_fwPostStart().

int EDS_fwPostServicesRegister ( EDS_fw fw,
unsigned int  idx,
const EDS_fwPostServices services,
void *  prm 
)

Initializes the specified EDS_fw posting stream.

Returns:
0, if successful, -1 if which is not between 0 and 3 inclusive
Parameters:
fw The EDS_fw structure to initialize
idx Which post routine (0-3 inclusive)
services Pointer to the list of services to set.
prm Parameter to the post routine

References EDS_fwPostRegister(), _EDS_fwPostServices::flush, _EDS_fwPostServices::notify, _EDS_fwPostServices::start, and _EDS_fwPostServices::write.

unsigned int EDS_fwPostStart ( EDS_fw fw,
unsigned int  list,
int  reason,
unsigned int  run_id,
unsigned int  startTime,
unsigned int  mode,
unsigned int  hw_key,
unsigned int  cfg_key 
)

Sets the parameters associated with a new run.

Returns:
A bit map of those posting streams reporting failure
Parameters:
fw The EDS_fw structure
list The target list of posting routine, specified as a bit mask
reason Suggested use is to indicate why the post stream is being started
run_id Suggested use is to identify the block of events between when EDS_fwStart is called and EDS_fwFlush is called with a stop reason
startTime The run start time rounded to the nearest second.
mode This must be the running mode.
hw_key The hardware configuration file key
cfg_key The software configuration file key. This likely a reference to how event handlers to EDS here configured (perhaps the LPA_DB key).

References EDS_FW_MASK, _EDS_fwPostCtl::enabled, _EDS_fw::post, _EDS_fwPostCtl::posters, _EDS_fwPoster::service, _EDS_fwPostServices::start, and _EDS_fwPostCtl::start.

Referenced by EDS_fwPostResume().

int EDS_fwSizeof ( void   ) 

Returns the size, in bytes, of and EDS_fw control structure.

Returns:
The size, in bytes, of and EBF_fw control structure


Generated on Tue Nov 29 23:24:43 2011 by  doxygen 1.5.8