Map front end Tx and Rx channel number to FELIX ID
Currently in the FELIX client controller configuration file, we need to specify the detectorID (did
) and the connectorID (cid
) (both are zeros by default). They help to convert the tx and rx channel numbers provided in the connectivity config to the 64-bit FELIX IDs (fid
) that are used with the FELiX client for sending and subscribing to data. As a result, one scan console can only work with one logical FELIX device at a time (one physical FLX-712 card has two logical devices).
This restriction is not necessary if we provide directly the fids
of the front ends, or specify did
and cid
per front end in the connectivity configs.
There is currently also a problem running with the second FELIX logical device (-d 1
and did=0; cid=1
). FelixRxCore::on_data
has a bug that would mismatch the rx channel number here when receiving data. A temporary fix just for this is to change uint32_t mychn = (fid >> 16) & 0xffffffff;
to uint32_t mychn = (fid >> 16) & 0x000fffff;
so the lowest bits of the connector ID is not included in the channel number.