<device-instance name="myDeviceNomenklatur"> <configuration> <description value="This is a device using WR based timing" /> <accelerator value="PLPS#123" /> <timingDomain value="FAIR" /> <mainMuxCriterion value="USER" /> </configuration> ...
<events-mapping> <myLogicalEvent> <event-configuration name="MyEventConfig"> <Timing> <hardware-event name="EVT_SOURCE_BEAM_ON#270" /> <hardware-event name="EVT_SOURCE_BEAM_OFF#271" /> </Timing> </event-configuration> <event-configuration name="MyEventConfig2"> <Timing> <hardware-event name="WhiteRabbit-SomeOtherTestEvent#2" /> </Timing> </event-configuration> ...
void MyRTAction::execute(fesa::RTEvent* pEvt) { std::cout << "MyRTAction::execute start" << std::endl; fesaGSI::TimingContextWR* scuContext = dynamic_cast<fesaGSI::TimingContextWR*>(pEvt->getMultiplexingContext()); fesaGSI::TimingContextWRPayload payload = scuContext->getPayload(); std::cout << "param: " << std::hex << payload.param_ << std::endl; std::cout << "timeStamp: " << payload.timeStamp_ << std::endl; std::cout << "usedEventFilter_: " << std::hex << payload.usedEventFilter_ << std::endl; std::cout << "MyRTAction::execute stop" << std::endl; }
void RTDeviceClass::specificInit() { GSI_ECA::Event eventFilter = 123; // filter to specify for which event(s) to listen GSI_ECA::Time offset = 0; // offset for the event, max 8ns GSI_ECA::Channel channel = 0; // PCI_EXPRESS = 1 (software-interrupts are reserved for FESA) .. ask the Timing-Team for possible other channels uint8_t relevantFilterBits = 12; // Bits which will be used for filtering in "eventFilter" (fesa uses first 32bits for eventID) maschineID-filtering is not used yet. fesaGSI::TimingEventSourceWR::registerHardwareTrigger( eventFilter, offset, channel, relevantFilterBits ); }
startScript.sh -usrArgs -WR / from FESA3 1.2.2 on: start_<deply-unit name>_<X>.sh -f "-usrArgs -WR"On FECs running 64-bit software the daemon launching the FESA software automatically detects depending on the information from the instance file which parameters to use during launch since the FESA software itself is not able to.
[root@scul022]$ eca-ctl dev/wbm0 send 0x0000002c00000042 0x12343456 0xabd +1 This would configure the ECA to launch event 44(2c) with the payload 0x12343456 0xabd in 1sec ( you can as well put absolute timestamps here! Ask Wesley for details) "42" could e.g. be a BeamProcessID. FESA assumes to find the EventNo in the first 32bits.
[root@scul022]$ eca-ctl dev/wbm0 send 0x7b02c000000000 0x12343456 0xabd +0.1 0x1ec0b04000000002 translates to: trigger event Timing::WhiteRabbit-CycleStart#44 with sequence ID 0, beam process ID 0, group ID 123, format ID 0, sequence counter 0
[root@scul022]$ eca-ctl dev/wbm0 send 0x7b02caaabbb7ff 0x12343456 0xabd +0.1 0x7b02caaabbb7ff translates to: trigger event Timing::WhiteRabbit-CycleStart#44 with sequence ID 2730, beam process ID 12013, group ID 123, format ID 0, sequence counter 1023