<device-instance name="myDeviceNomenklatur"> <configuration> <description value="This is a WhiteRabbitDevice" /> <accelerator value="CRYRING-YRS1#200" /> <timingDomain value="FAIR" /> <mainMuxCriterion value="USER" /> </configuration> ...
<events-mapping> <myLogicalEvent> <event-configuration name="MyEventConfig"> <Timing> <hardware-event name="EVT_BP_START#256" /> <hardware-event name="EVT_BEAM_ON#6" /> </Timing> </event-configuration> <event-configuration name="MyEventConfig2"> <Timing> <hardware-event name="EVT_BEAM_ON#6" /> </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 = 256; // 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 !WhiteRabbit-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 ); }
from FESA3 2.0.1 on: start_<deply-unit name>_<X>.sh -f "-usrArgs -WR"
[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! Refer to WesleyTerpstra for details) "42" could e.g. be a BeamProcessID. !FESA3 assumes to find the EventNo in the first 32bits.
[root@scul022]$ eca-ctl dev/wbm0 send 0x1ec0b0400000002 0x12343456 0xabd +0.1 0x1ec0b04000000002 translates to: trigger event Timing::WhiteRabbit-CycleStart#44 with sequence ID 1024, beam process ID 0, group ID 492, format ID 0, sequence counter 2