Alex came over with a short RFM cable this morning. We used it to connect the rfm card in c1iscey to the rfm card megatron
Alex renamed startup.cmd in /cvs/cds/caltech/target/c1iscey/ to startup.cmd.sav, so it doesn't come up automatically. At the end we moved it back.
Alex used the vxworks command d to look at memory locations on c1iscey. Such as d 0xf0000000, which is the start of the rfm code location. So to look at 0x11a1c8 (lscPos) in the rfm memory, he typed "d 0xf011a1c8". After doing some poking around, we look at the raw tst front end code (in /home/controls/cds/advLigo/src/fe/tst), and realized it was trying to read doubles. The old rts code uses floats, so the code was reading incorrectly.
As a quick fix, we changed the code to floats for that part. They looked like:
etmy_lsc = filterModuleD(dsp_ptr,dspCoeff,ETMY_LSC,cdsPciModules.pci_rfm? *(\
(double *)(((void *)cdsPciModules.pci_rfm) + 0x11a1c8)) : 0.0,0);
And we simply changed the double to float in each case. In addition we changed the RCG scripts locally as well (if we do a update at some point, it'll get overwritten). The file we updated was /home/controls/cds/advLigo/src/epics/util/lib/RfmIO.pm
Line 57 and Line 84 were changed, with double replaced with float.
return "cdsPciModules.pci_rfm? *((float *)(((void *)cdsPciModules.pci
_rfm[$card_num]) + $rfmAddressString)) : 0.0";
. " *((float *)(((char *)cdsPciModules.pci_rfm[$card_nu
m]) + $rfmAddressString)) = $::fromExp;\n"
This fixed our ability to read the RFM card, which now can read the LSC POS channel, for example.
Unfortunately, when we were putting everything the way it was with RFM fibers and so forth, the c1iscey started to get garbage (all the RFM memory locations were reading ffff). We eventually removed the VME board, removed the RFM card, looked at it, put the RFM card back in a different slot on the board, and returned c1iscey to the rack. After this it started working properly. Its possible in all the plugging and unplugging that the card somehow had become loose.
The next step is to add all the channels that need to be read into the .mdl file, as well as testing and adding the channel which need to be written.