Problem:
The dolphin RFM was not sending data between c1lsc and c1sus.
Solution:
Dig into the controller.c code located in /opt/rtcds/caltech/c1/core/advLigoRTS/src/fe/. Find this bit of code on line 2173:
2173 #ifdef DOLPHIN_TEST
2174 #ifdef X1X14_CODE
2175 static const target_node = 8; //DIS_TARGET_NODE;
2176 #else
2177 static const target_node = 12; //DIS_TARGET_NODE;
2178 #endif
2179 status = init_dolphin(target_node);
Replace it with this bit of code:
2173 #ifdef DOLPHIN_TEST
2174 #ifdef C1X02_CODE
2175 static const target_node = 8; //DIS_TARGET_NODE;
2176 #else
2177 static const target_node = 4; //DIS_TARGET_NODE;
2178 #endif
2179 status = init_dolphin(target_node);
Basically this was hard coded for use at the site on their test stands. When starting up, the dolphin adapter would look for a target node to talk to, that could not be itself. So, all the dolphin adapters would normally try to talk to target_node 12, unless it was the X1X14 front end code, which happened to be the one with dolphin node id 12. It would try to talk to node 8.
Unfortunately, in our setup, we only had nodes 4 and 8. Thus, both our codes would try to talk to a nonexistent node 12. This new code has everyone talk to node 4, except the c1x02 process which talks to node 8 (since it is node 4 and can't talk to itself).
I'm told this stuff is going away in the next revision and shouldn't have this hard coded stuff.
Different Dolphin Problem and Fix:
Apparently, the only models which should have pciRfm=1 are the IOP models which have a dolphin connection. Front end models that are not IOP models (like c1lsc and c1rfm) should not have this flag set. Otherwise they include the dolphin drivers and causes them and the IOP to refuse to unload when using rmmod.
So pciRfm=1 only in IOP models using Dolphin, everyone else should not have it or should have pciRfm=-1.
Current CDS status:
MC damp |
dataviewer |
diaggui |
AWG |
c1ioo |
c1sus |
c1iscex |
RFM |
Dolphin RFM |
Sim.Plant |
Frame builder |
TDS |
|
|
|
|
|
|
|
|
|
|
|
|
|