...
- ATCACommon.h: Contains the ASYN driver class definition
- ATCACommon.cc: Contains the method definitions of ATCACommon asyn driver that instantiates PVs to read status and control registers of DaqMux 0 and 1, JESD Top (AMC) 0 and 1, Waveform engine, firmware build information and ADC temperatures
- crossbarControl.hh: Defines two classes: CrossbarControlAsynDriver and CrossbarControlDriver
- crossbarControl.cpp: contains the methods of both classes and the ICO shell command to instantiate the asyn driver
- debugStream.h: contains the DebugStreamAsynDriver class definition and several APIs to allow upper layer software to register callbacks with stream data reception
- debugStream.cpp: contains the meothods of DebugStreamAsynDriver class, and the stream related API function instantiations
- debugStreamInterface.h : contains API function to register a stream callback
The database files associated are as follows
- atcaCommon.db: database file containing general information PVs
- daqMux.db: database file containing daqMux general control and status PVs
- daqMuxChn.db: database file containing daqMux channel specific control and status PVs
- jesdCount.db: database file containing Jesd PVs
- waveformEngine.db: database file containing waveformEngine general control and status PVs
- waveformEngineChannel.db: database file containing waveformEngine channel specific control and status PVs
- ATCACommon.substitutions: Instantiation of upper mentioned db files once or several times with different macro values
- crossbarAlarn.db: database file containing crossbar alarm
- crossbarControl.db: database file containing crossbar input select PV
- crossbarCtrl.substitutions: instantiation of crossbarAlarm and crossbarControl database files once or several times
- streamTypeCh.db : database file containing channel specific configurations
- streamType.substitutions: database file instantiating streamTypeCh several times (4)
- streamWf.db: database file containing stream waveforms
- StreamDouble.substitutions: instantiate streamWf.db 4 times with double type
- StreamFloat.substitutions: instantiate streamWf.db 4 times with float type
- StreamLong.substitutions: instantiate streamWf.db 4 times with long type
- StreamShort.substitutions: instantiate streamWf.db 4 times with short type
- StreamUlong.substitutions: instantiate streamWf.db 4 times with ulong type
- StreamUshort.substitutions: instantiate streamWf.db 4 times with ushort type
Operation
...
CrossbarControlDriver and CrossbarControlAsynDriver classes (crossbarControl.h/cpp)
...
Gliffy Diagram |
---|
macroId | ea91832f-b5d6-4a84-b5f5-e0a16bbb8339 |
---|
displayName | debugStream execution flowchart |
---|
name | debugStream execution flowchart |
---|
pagePin | 2 |
---|
|
Registering stream callback
The functionality of debugStream could be extended to call one's own callback along with the default. The API function provided for registering the callback is in the debugStreamInterface.h header file and is as follows
Code Block |
---|
language | cpp |
---|
theme | RDark |
---|
title | Register stream callback function |
---|
|
/**
* @brief Register a callback when data arrives on a specific channel of stream
*
* @param portName : name of the asyn port generating the stream
* @param stream_channel : Number of the channel to be parsed (1-4)
* @param cb_func : callback function to register
* @param cb_usr : private structure that will be passed to the callback
* @return int : -1 if channel not found, else 0
*/
int registerStreamCallback(const char *portName, const int stream_channel, STREAM_CALLBACK_FUNCTION cb_func, void *cb_usr); |
Module exported IOC shell commands, description, and
...
parameters
TBD
PV name list
TBD
Reading your own streams
TBD