Download presentation
Presentation is loading. Please wait.
Published byRose Leonard Modified over 9 years ago
1
LBTO Reflective Memory August 17, 2006 Chris Biddick 1 cjb
2
Introduction Mechanism for maintaining all TCS state and status Local shared memory segment Network demon to update all systems Part of the Data Dictionary Reflective memory is composed of XML definitions Binary definitions (ddsconfig) Several pieces of CommonSW Network Reference document: 481s504481s504 2 cjb
3
Reflective memory definitions Path in CVS: LBTO/TCS/usr/commonsw/DDArchive/ReflectiveMemory/ Every subsystem has a directory Files are hierarchical in the file system PSF/PSFside/PrimaryMirror/modes.xml psf.side[n].primaryMirror.modes Arrays allowed at all levels Variable types: BIT, CHAR, UCHAR, SHORT, USHORT, INT, UINT LONG, ULONG, FLOAT, DOUBLE, STRING Subdirectory name 3 cjb
4
XML files Meta Dictionary Entry Defines level of hierarchy Points to subdirectory Determines element name Reflective Memory Dictionary Entry Defines actual variables 4 cjb
5
Meta Dictionary Entry example side PSF/side PSF PSFside 2 5 cjb
6
Reflective Memory Dictionary Entry example modes PSF/PSFside/PrimaryMirror/modes Number of bending modes used PSF INT 1 N/A 0 160 1 0 ASTRONOMER ALL None right now 0 cjb ASTRONOMER Modified the danger lower limit 2004-11-12 11:01:20 6 cjb
7
DDEditorGUI Display/create/modify definitions Populates FullQualifiedName, Owner, and all UpdateInfo fields Directory options Add folder Add file Delete Rename Move Copy 7 cjb
8
DDEditorGUI (cont) File options Delete Rename Move Copy Edit by double clicking on fields To create a new level of hierarchy Make subdirectory Make file whose type is the subdirectory 8 cjb
9
Binary reflective memory definitions Install reflective memory (and other) definitions cd LBTO/TCS/usr sudo make install Run ddsconfig sudo ddsconfig -refmem Makes files: /usr/local/bin/.binRefMemDictionary /usr/local/lib/libLBTGshmVar.so /usr/local/include/LBT/GshmVar.h /usr/local/etc/OffsetTable.conf 9 cjb
10
Reflective memory access Two ways: Gtype objects Use variable names directly No notification if errors SetValueInterface objects Each reference a function call Status return for errors May read/write a buffer 10 cjb
11
Gtype access Some operators overloaded, use cast if unsure; see 481s504481s504 Can get metadata Examples: psf.side[side].primaryMirror.modes = 6; int modes = psf.side[side].primaryMirror.modes; int muplim = psf.side[side].primaryMirror.modes.get_upperlimit(); 11 cjb
12
SetValueInterface access Create SetValueInterface object #include SetValueInterface svi; int modes,err; Write err = svi.write(&psf.side[side].primaryMirror.modes,modes); err = svi.write(“psf.side[side].primaryMirror.modes”,modes); Read err = svi.read(&psf.side[side].primaryMirror.modes,&modes); err = svi.read(“psf.side[side].primaryMirror.modes”,&modes); 12 cjb
13
SetValueInterface access (cont) Check for errors if(svi.isError(err) && err != VALUEOUTOFBOUNDS) { //error } Metadata string muplim = svi.getUpperLimit(“psf.side[side].primaryMirror.modes”); int muplim = svi.getUpperLimit(&psf.side[side].primaryMirror.modes); See 481s504 for details481s504 13 cjb
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.