The main communications data structure is RFM_FE_COMMS, from the rts/src/include/iscNetDsc40m.h file. The following comments regard sub-structures inside it. I'm looking at all the files in /rts/src/fe/40m to determine how the structures are used, or if they seem to be unnecessary.
The dsccompad structure is used in the lscextra.c file. I am assuming I don't need to add anything fo the model for these. They cover from 0x00000040 to 0x00001000.
FE_COMMS_DATA is used twice, once for dataESX (0x00001000 to 0x00002000), and once for dataESY (0x00002000 to 0x00003000).
Inside FE_COMMS_DATA we have:
status and cycle which look to be initialized then never changed (although they are compared to).
ascETMoutput[P,Y], ascQPDinput are all set to 0 then never used.
qpdGain is used, and set by asc40m, but not read by anything. It is offset 114, so in dataESX its 4210 (0x00001072), and in dataESY its (0x00002072)
All the other parts of this substructure seem to be unused.
daqTest, dgsSet, low1megpad,mscomms seem unused.
dscPad is referenced, but doesn't seem to be set.
pCoilDriver is a structure of type ALL_CD_INFO, inside a union called suscomms, inside FE_COMMS_Data, and is used. In this structure, we have:
extData, an array of DSC_CD_PPY structures, which is used. Inside extData we have for each optic (ETMY has an offset of 9 inside the extData array):
Pos is set in sos40m.c via the line pRfm->suscomms.pCoilDriver.extData[jj].Pos = dsp[jj].data[FLT_SUSPos].filterInput; Elsewhere, Pos seems to be set to 1.0
Similarly, Pit and Yaw are set in sos40m, except with FLT_SUSPitch and FLT_SUSYaw, and being set elsewhere to 1.1, 1.2. However, these are never applied to the ETMX and ETMY optics (it goes through offests 0 through 7 inclusive).
Side is set 1.3 or 1.0 only, not used.
ascPit , ascYaw, lscPos are read by the losLinux.c code, and is updated by the sos40m.c code. For ETMY, their respective addresses are: 0x11a1c0, 0x11a1c4, 0x11a1c8.
lscTpNum, lscExNum, seem to be initialized, and read by the losLinux.c, and set by sos40m.c.
modeSwitch is read, but looks to be used for turning dewhitening on and off. Similarly dewhiteSW1R is read and used.
This ends the DSC_CD_PPY structure.
lscCycle, which is used, although it seems to be an internal check.
dum is unused.
losOpLev is a substructure that is mostly unused. Inside losOpLev, opPerror, opYerror, opYout seem to be unused, and opPout only seems ever to be set to 0.
Thats the end of ALL_CD_INFO and pCoilDriver.
After we have itmepics, itmfmdata, itmcoeffs, rmbsepics,...etymyepics, etmyfmdata,etmycoeffs which I don't see in use.
We have substructure asc inside mcasc, with epics, filt, and coeff char arrays. These seem to be asc and iowfsDrv specific.
lscIpc, lscepics, and lscla seems lsc specific,
The there is lscdiag struct, which contains v struct, which includes cpuClock, vmeReset, nSpob, nPtrx, nPtry don't seem to be used by the losLinux.c.
The lscfilt structure contains the FILT_MOD dspVME, which seems to be used only by lsc40m.
The lsccoeff structure contrains the VME_COEF pRfmCoeff, which again seems to only interact in the lsc code.
Then we have aciscpad, ascisc, ascipc, ascinfo, and mscepics which do not seem to be used.
ascepics and asccoeff are used in asc.c, but does not seem to be referenced elsewhere.
hepiepics , hepidsp, hepicoeff, hepists do not appear to be used.