The timing/bsa package and the bsaDriver module are incharge of all acquisition services, namely : Beam Line Data (BLD), Beam Synchronous Acquisition (BSA), Beam Synchronous Acquisition Service (BSAS) and Beam Synchronous Scalar Service (BSSS) for the super conducting accelerator.
TBD
This contains a list of the capabilities of the module/package i detail. The reader should be able to understand the basic functionalities of this package/module by reading this text.
The timing/bsa requires paths that will denote the relevant registers/streams/and drams described in the YAML files. The necessary YAML files are as follows
The involved registers are as follows
Register Index | YAML File | Stream/Register name | Description |
---|---|---|---|
1 | BldAxiStream.yaml | packetSize | Maximum size of packets in 32b words |
2 | enable | service enable | |
3 | channelMask | Mask of enabled channels | |
4 | currPacketSize | Current size of packet in 32b words | |
5 | currPacketState | Current packet fill state. Relevant to the statemachine filling the packet in the firmware and irrelevant to the software engineer | |
6 | currPulseIdL | Current packet pulseID lower word | |
7 | currTimeStampL | Current packet timestamp lower word | |
8 | currDelta | Current compressed timestamp/pulseID | |
9 | packetCount | Generated packet count | |
10 | paused | Stream paused | |
11 | diagnClockRate | Diagnostic bus clock rate | |
12 | diagnStrobeRate | Diagnostic bus strobe rate | |
13 | eventSel0Rate | Event select0 rate | |
14 | EdefEnable[#EDEFS] | Enable a specific event definition | |
15 | EdefRateLimit[#EDEFS] | Event definition rate limit | |
16 | EdefRateSel[#EDEFS] | Event definition rate select | |
17 | EdefDestSel[#EDEFS] | Event definition destination select | |
Each file/associated classes will be described here. UML diagrams and text description can be used. A UML cheat sheet can be found here. Instantiation information (if applicable) can be mentioned. Flow diagrams for describing the class operation are also welcome. Everything can be developed in Gliffy.
Here you can mention if the package/module throws any exceptions, and you can also mention how these exceptions should be handled in upper layers.
Is the package extendable to add a new function or to modify an existing function? If so, it needs to be mentioned here.
All EPICS shell commands provided should be described here with their input parameters.
The PV list goes here. If any other page described some or all PVs, it can be referenced here. The register index can map the PV to the register described in the YAML section above.
Contains functions and structures to read the BLD/BSSS/BSAS stream coming from the firmware and call the registered callback functions with the stream data stored in buffers. It also provides functions to print statistics. This file forms an EPICS driver run at IOC boot automatically without any user setup or configuration.
This Asyn driver is used to initialize both BSSS and BLD since they both have identical firmware structures. This file contains some similar structures with bldStream.cpp file. A static pointer is declared globally in the file, and used to store different service drivers in a linked list.
A simple description of the linked list functions is as follows: