00001 #!/usr/local/bin/python 00002 # 00003 # Copyright 2004 00004 # by 00005 # The Board of Trustees of the 00006 # Leland Stanford Junior University. 00007 # All rights reserved. 00008 # 00009 00010 __facility__ = "Online" 00011 __abstract__ = "GLAST LAT Housekeeping server infrastructure" 00012 __author__ = "Jim Panetta <panetta@slac.stanford.edu> SLAC - GLAST I&T" 00013 __date__ = "07/28/04" 00014 __version__ = "$Revision: 1.9 $" 00015 __release__ = "$Name: R04-12-00 $" 00016 __credits__ = "SLAC" 00017 00018 import LATTE.copyright_SLAC 00019 #from LATTE.monitoring.Trendable import Trendable 00020 from LATTE.database.gHSK import GHSK 00021 from LATTE.database.gLAT import GLAT 00022 from copy import deepcopy 00023 00024 class TrendMapBase(object): 00025 def __init__(self): 00026 # set up basic definition of a the LATTE housekeeping map. Pretty much just define keys 00027 self.__map = {} 00028 00029 self.__map['LHKSPARE08'] = None #8 bit spare tag 00030 self.__map['LHKSPARE01'] = None #8 bit spare tag 00031 # Add direct TEM quantities 00032 for i in range(16): 00033 self.__map['LHKT%XCAL33IA'%i ] = None # CAL 3.3 analog I 00034 self.__map['LHKT%XCAL33ID'%i ] = None # CAL 3.3 digital I 00035 self.__map['LHKT%XCAL33VA'%i ] = None # CAL 3.3 analog V 00036 self.__map['LHKT%XCAL33VD'%i ] = None # CAL 3.3 digital V 00037 self.__map['LHKT%XCALBIASI'%i] = None # CAL bias I 00038 self.__map['LHKT%XCALBIASV'%i] = None # CAL bias V 00039 self.__map['LHKT%XTEM33I'%i ] = None # TEM digital 3.3 I 00040 self.__map['LHKT%XTEM33V'%i ] = None # TEM digital 3.3 V 00041 self.__map['LHKT%XTKR25ID'%i ] = None # TKR digital 2.5 I 00042 self.__map['LHKT%XTKR25VD'%i ] = None # TKR digital 2.5 V 00043 self.__map['LHKT%XTKR15IAA'%i] = None # TKR analog A 1.5 I 00044 self.__map['LHKT%XTKR15VAA'%i] = None # TKR analog A 1.5 V 00045 self.__map['LHKT%XTKR25IAB'%i] = None # TKR analog B 2.5 I 00046 self.__map['LHKT%XTKR25VAB'%i] = None # TKR analog B 2.5 V 00047 self.__map['LHKT%XTKRBIASI'%i] = None # TKR Bias I 00048 self.__map['LHKT%XTKRBIASV'%i] = None # TKR Bias V 00049 for j in range(4): 00050 self.__map['LHKT%XCALAF%XT0'%(i,j)] = None # CAL AFEE T0 00051 self.__map['LHKT%XCALAF%XT1'%(i,j)] = None # CAL AFEE T1 00052 for j in range(8): 00053 self.__map['LHKT%XTKRC%XT0'%(i,j) ] = None # TKR CC T0 00054 self.__map['LHKT%XTKRC%XT1'%(i,j) ] = None # TKR CC T1 00055 00056 # Add ACD FREE values to map. 12*4 + 4 = 52 values 00057 self.__map['LHKAFR33ISUM' ] = None # AEM DAQ board FreeI 00058 self.__map['LHKADABTEMP' ] = None # AEM DAQ board Temperature 00059 self.__map['LHKAFR28ISUM' ] = None # AEM DAQ board HVI 00060 self.__map['LHKADAB33V' ] = None # AEM DAQ board DAQV 00061 # self.__map['?????????????' ] = None # AEM Common status 00062 # self.__map['?????????????' ] = None # AEM Cable status 00063 for i in range(12): 00064 self.__map['LHKAEMFR%dT'%i ] = None # Temperature Free board i 00065 self.__map['LHKAEMFR%dV1'%i] = None # HV1 Free board i 00066 self.__map['LHKAEMFR%dV2'%i] = None # HV2 Free board i 00067 self.__map['LHKAEMFR%dVD'%i] = None # VDD Free board i 00068 00069 # Add PDU values to map. 2 pdus 00070 for p in range(2): 00071 self.__map['LHKP%dACDBGT0'%(p)] = None # PDU ACD BEA GRID temp 0 00072 self.__map['LHKP%dACDBGT1'%(p)] = None # PDU ACD BEA GRID temp 0 00073 self.__map['LHKP%dACDCNVT'%(p) ] = None # PDU ACD Power converter source 00074 self.__map['LHKP%dACDPM'%(p) ] = None # PDU ACD power state 00075 self.__map['LHKP%dACDPRT0'%(p) ] = None # PDU ACD PMT rail temp 0 00076 self.__map['LHKP%dACDPRT1'%(p) ] = None # PDU ACD PMT rail temp 1 00077 self.__map['LHKP%dACDPRT2'%(p) ] = None # PDU ACD PMT rail temp 2 00078 self.__map['LHKP%dACDPRT3'%(p) ] = None # PDU ACD PMT rail temp 3 00079 self.__map['LHKP%dACDPSP'%(p) ] = None # PDU ACD power supply source 00080 self.__map['LHKP%dACDSHT0'%(p) ] = None # PDU ACD Shell Temp 0 00081 self.__map['LHKP%dACDSHT1'%(p) ] = None # PDU ACD Shell Temp 1 00082 00083 # Add PDU Tem quants to map 00084 for i in range(16): 00085 self.__map['LHKP%dCAL%XBPT'%(p,i)] = None # PDU CAL Baseplate temp 00086 self.__map['LHKP%dTEM%X33V'%(p,i)] = None # PDU TEM digital 3.3v 00087 self.__map['LHKP%dTEM%XPCT'%(p,i)] = None # PDU TEM PCB temp 00088 self.__map['LHKP%dTEM%XPM'%(p,i) ] = None # PDU TEM power state 00089 self.__map['LHKP%dTEM%XPST'%(p,i) ] = None # PDU TEM power supply temp 00090 00091 # PDU EPU quants 00092 for i in range(3): 00093 self.__map['LHKP%dEPU%d33V'%(p,i) ] = None # PDU EPU digital 3.3v 00094 self.__map['LHKP%dEPU%dCNVT'%(p,i)] = None # PDU EPU Crate power state 00095 self.__map['LHKP%dEPU%dPM'%(p,i) ] = None # PDU EPU Converter state 00096 self.__map['LHKP%dEPU%dT'%(p,i) ] = None # PDU EPU Temp 00097 00098 for i in range(12): 00099 self.__map['LHKP%dGRID%dT'%(p,i) ] = None # PDU grid temp 00100 self.__map['LHKP%dRAD%dT'%(p,i) ] = None # PDU radiators temp 00101 00102 self.__map['LHKP%dRADAFHT0'%(p)] = None # PDU Radiator afrz temp0 00103 self.__map['LHKP%dRADAFHT1'%(p)] = None # PDU Radiator afrz temp1 00104 for i in range(4): 00105 self.__map['LHKP%dGRAD%dIFT'%(p,i)] = None # PDU Grid-Rad Iface Temp 00106 00107 for i in range(6): 00108 self.__map['LHKP%dMHP%dDSIT'%(p,i)] = None # PDU VCHP-DSHP interface temps 00109 self.__map['LHKP%dMHP%dRVHT'%(p,i)] = None # PDU VCHP Reservoir temps 00110 self.__map['LHKP%dMHP%dXLIT'%(p,i)] = None # PDU VCHP-XLHP interface temps 00111 self.__map['LHKP%dPHP%dDSIT'%(p,i)] = None # PDU VCHP-DSHP interface temps 00112 self.__map['LHKP%dPHP%dRVHT'%(p,i)] = None # PDU VCHP Reservoir temps 00113 self.__map['LHKP%dPHP%dXLIT'%(p,i)] = None # PDU VCHP-XLHP interface temps 00114 00115 # # Add EBM values to map 00116 # self.__map['LHKEEVT'] = None # EBM Events 00117 # self.__map['LHKEGEMRS'] = None # EBM GEM Receive stat 00118 # self.__map['LHKEAEMRS'] = None # EBM AEM Receive stat 00119 # self.__map['LHKESIU0RS'] = None # EBM SIU Receive stat 00120 # self.__map['LHKESIU1RS'] = None # EBM SIU Receive stat 00121 # for i in range(16): 00122 # self.__map['LHKETEM%XRS'%i] = None # EBM TEM Receive stat 00123 # for i in range(3): 00124 # self.__map['LHKEEPU%XRS'%i] = None # EBM EPU Receive stat 00125 # self.__map['LHKEEPU%XTS'%i] = None # EBM EPU Transmit stat 00126 # self.__map['LHKESIU0TS'] = None # EBM SIU Transmit stat 00127 # self.__map['LHKESIU1TS'] = None # EBM SIU Transmit stat 00128 # self.__map['LHKESSRTS'] = None # EBM SSR Transmit stat 00129 00130 # Still need HCOM, HCPU, LRS quantities 00131 00132 # Create all the "ST" status tags. 00133 kList = self.mapKeys() 00134 for key in kList: 00135 self.__map[key + 'ST'] = None 00136 00137 def mapSet(self, key, value): 00138 if self.__map.has_key(key): 00139 self.__map[key] = value 00140 else: 00141 raise KeyError("TrendMap does not contain key %s.", key) 00142 00143 def mapGet(self, key): 00144 if self.__map.has_key(key): 00145 return self.__map[key] 00146 else: 00147 raise KeyError("TrendMap does not contain key %s.", key) 00148 00149 def mapKeys(self): 00150 return self.__map.keys() 00151 00152 class GHSKTrendMap(TrendMapBase): 00153 def __init__(self, ghsk): 00154 TrendMapBase.__init__(self) 00155 00156 # Hack for null quantities 00157 hnul = ghsk.downHNUL() 00158 self.mapSet('LHKSPARE08', (hnul, 'EMPTY') )# Spare bits in hsk packet 00159 self.mapSet('LHKSPARE01', (hnul, 'EMPTY') )# Spare bits in hsk packet 00160 00161 # Add direct TEM quantities 00162 for i in range(16): 00163 htem = ghsk.downHTEM(i) 00164 if htem is None: continue 00165 # self.mapSet('LHKT%XCAL33IA'%i , (htem, 'CAL_ANALOG_I') )# CAL 3.3 analog I 00166 # self.mapSet('LHKT%XCAL33ID'%i , (htem, 'CAL_DIGITAL_I') )# CAL 3.3 digital I 00167 self.mapSet('LHKT%XCAL33VA'%i , (htem, 'CAL_ANALOG_V') )# CAL 3.3 analog V 00168 self.mapSet('LHKT%XCAL33VD'%i , (htem, 'CAL_DIGITAL_V') )# CAL 3.3 digital V 00169 self.mapSet('LHKT%XCALBIASI'%i, (htem, 'CAL_BIAS_I') )# CAL bias I 00170 self.mapSet('LHKT%XCALBIASV'%i, (htem, 'CAL_BIAS_V') )# CAL bias V 00171 self.mapSet('LHKT%XTEM33I'%i , (htem, 'TEM_DIGITAL_I') )# TEM digital 3.3 I 00172 self.mapSet('LHKT%XTEM33V'%i , (htem, 'TEM_DIGITAL_V') )# TEM digital 3.3 V 00173 # self.mapSet('LHKT%XTKR25ID'%i , (htem, 'TKR_DIGITAL_I') )# TKR digital 2.5 I 00174 self.mapSet('LHKT%XTKR25VD'%i , (htem, 'TKR_DIGITAL_V') )# TKR digital 2.5 V 00175 # self.mapSet('LHKT%XTKR15IAA'%i, (htem, 'TKR_ANALOGA_I') )# TKR analog A 1.5 I 00176 self.mapSet('LHKT%XTKR15VAA'%i, (htem, 'TKR_ANALOGA_V') )# TKR analog A 1.5 V 00177 # self.mapSet('LHKT%XTKR25IAB'%i, (htem, 'TKR_ANALOGB_I') )# TKR analog B 2.5 I 00178 self.mapSet('LHKT%XTKR25VAB'%i, (htem, 'TKR_ANALOGB_V') )# TKR analog B 2.5 V 00179 self.mapSet('LHKT%XTKRBIASI'%i, (htem, 'TKR_BIAS_I') )# TKR Bias I 00180 self.mapSet('LHKT%XTKRBIASV'%i, (htem, 'TKR_BIAS_V') )# TKR Bias V 00181 for j in range(4): 00182 self.mapSet('LHKT%XCALAF%XT0'%(i,j), (htem, 'AFEE_%d_T0'%j) ) # CAL AFEE T0 00183 self.mapSet('LHKT%XCALAF%XT1'%(i,j), (htem, 'AFEE_%d_T1'%j) ) # CAL AFEE T1 00184 for j in range(8): 00185 self.mapSet('LHKT%XTKRC%XT0'%(i,j) , (htem, 'TKR_C%d_T0'%j) ) # TKR CC T0 00186 self.mapSet('LHKT%XTKRC%XT1'%(i,j) , (htem, 'TKR_C%d_T1'%j) ) # TKR CC T1 00187 00188 # Add ACD FREE values to map. 12*4 + 4 = 52 values 00189 haem = ghsk.downHAEM() 00190 if haem is not None: 00191 self.mapSet('LHKAFR33ISUM' , (haem, 'FreeI' ) ) # AEM DAQ board FreeI 00192 self.mapSet('LHKADABTEMP' , (haem, 'Temperature' ) ) # AEM DAQ board Temperature 00193 self.mapSet('LHKAFR28ISUM' , (haem, 'HVI' ) ) # AEM DAQ board HVI 00194 self.mapSet('LHKADAB33V' , (haem, 'DAQV' ) ) # AEM DAQ board DAQV 00195 # self.mapSet('?????????????' , (haem, 'CommonStatus') ) # AEM Common status 00196 # self.mapSet('?????????????' , (haem, 'CableStatus' ) ) # AEM Cable status 00197 for i in range(12): 00198 harc = haem.downHARC(i) 00199 if harc is None: continue 00200 self.mapSet('LHKAEMFR%dT'%i , (harc, 'Temperature') ) # Temperature Free board i 00201 self.mapSet('LHKAEMFR%dVD'%i, (harc, 'Vdd' ) ) # VDD Free board i 00202 self.mapSet('LHKAEMFR%dV1'%i, (harc, 'HV1' ) ) # HV1 Free board i 00203 self.mapSet('LHKAEMFR%dV2'%i, (harc, 'HV2' ) ) # HV2 Free board i 00204 00205 # Add PDU values to map. 2 pdus 00206 for p in range(2): 00207 hpdu = ghsk.downHPDU(p) 00208 if hpdu is None: continue 00209 self.mapSet('LHKP%dACDBGT0'%(p), (hpdu, 'ACDBEAgridTemp0') ) # PDU ACD BEA GRID temp 0 00210 self.mapSet('LHKP%dACDBGT1'%(p), (hpdu, 'ACDBEAgridTemp1') ) # PDU ACD BEA GRID temp 0 00211 self.mapSet('LHKP%dACDCNVT'%(p) , (hpdu, 'ACDconvTemp') ) # PDU ACD Power converter source 00212 self.mapSet('LHKP%dACDPM'%(p) , (hpdu, 'ACDpowerState') ) # PDU ACD power state 00213 self.mapSet('LHKP%dACDPRT0'%(p) , (hpdu, 'ACDpmtRailTemp0') ) # PDU ACD PMT rail temp 0 00214 self.mapSet('LHKP%dACDPRT1'%(p) , (hpdu, 'ACDpmtRailTemp1') ) # PDU ACD PMT rail temp 1 00215 self.mapSet('LHKP%dACDPRT2'%(p) , (hpdu, 'ACDpmtRailTemp2') ) # PDU ACD PMT rail temp 2 00216 self.mapSet('LHKP%dACDPRT3'%(p) , (hpdu, 'ACDpmtRailTemp3') ) # PDU ACD PMT rail temp 3 00217 self.mapSet('LHKP%dACDPSP'%(p) , (hpdu, 'ACDpowerSupply') ) # PDU ACD power supply source 00218 self.mapSet('LHKP%dACDSHT0'%(p) , (hpdu, 'ACDShellTemp0') ) # PDU ACD Shell Temp 0 00219 self.mapSet('LHKP%dACDSHT1'%(p) , (hpdu, 'ACDShellTemp1') ) # PDU ACD Shell Temp 1 00220 00221 # Add PDU Tem quants to map 00222 for i in range(16): 00223 self.mapSet('LHKP%dCAL%XBPT'%(p,i), (hpdu, 'CalBaseplateTemp%d'%i) ) # PDU CAL Baseplate temp 00224 self.mapSet('LHKP%dTEM%X33V'%(p,i), (hpdu, 'TEM%d_digital33V'%i) ) # PDU TEM digital 3.3v 00225 self.mapSet('LHKP%dTEM%XPCT'%(p,i), (hpdu, 'TEM%d_PCBTemp'%i) ) # PDU TEM PCB temp 00226 self.mapSet('LHKP%dTEM%XPST'%(p,i), (hpdu, 'TEM%d_PSTemp'%i) ) # PDU TEM power supply 00227 self.mapSet('LHKP%dTEM%XPM'%(p,i) , (hpdu, 'TEM%d_powerState'%i) ) # PDU TEM power supply 00228 00229 # PDU EPU quants 00230 for i in range(3): 00231 self.mapSet('LHKP%dEPU%d33V'%(p,i) , (hpdu, 'EPUdigitalVoltage%d'%i) ) # PDU EPU digital 3.3v 00232 self.mapSet('LHKP%dEPU%dCNVT'%(p,i), (hpdu, 'EPUCratePowerStat%d'%i) ) # PDU EPU Crate power state 00233 self.mapSet('LHKP%dEPU%dPM'%(p,i) , (hpdu, 'EPUConverterStat%d') ) # PDU EPU Converter state 00234 self.mapSet('LHKP%dEPU%dT'%(p,i) , (hpdu, 'EPUTemp%d'%i) ) # PDU EPU Temp 00235 00236 for i in range(12): 00237 self.mapSet('LHKP%dGRID%dT'%(p,i) , (hpdu, 'GridTemp%d'%i) ) # PDU grid temp 00238 self.mapSet('LHKP%dRAD%dT'%(p,i) , (hpdu, 'RadiatorTemp%d'%i) ) # PDU radiators temp 00239 00240 self.mapSet('LHKP%dRADAFHT0'%(p), (hpdu, 'RadiatorAfrzTemp0') ) # PDU Radiator afrz temp0 00241 self.mapSet('LHKP%dRADAFHT1'%(p), (hpdu, 'RadiatorAfrzTemp1') ) # PDU Radiator afrz temp1 00242 for i in range(4): 00243 self.mapSet('LHKP%dGRAD%dIFT'%(p,i), (hpdu, 'GridRadiatorTemp%d'%i) ) # PDU Grid-Rad Iface Temp 00244 00245 for i in range(6): 00246 self.mapSet('LHKP%dMHP%dDSIT'%(p,i), (hpdu, 'VHCP_DSHP_M_Temp%d'%i) ) # PDU VCHP-DSHP interface temps 00247 self.mapSet('LHKP%dMHP%dRVHT'%(p,i), (hpdu, 'VHCPRes_M_Temp%d'%i) ) # PDU VCHP Reservoir temps 00248 self.mapSet('LHKP%dMHP%dXLIT'%(p,i), (hpdu, 'VHCP_XLHP_M_Temp%d'%i) ) # PDU VCHP-XLHP interface temps 00249 self.mapSet('LHKP%dPHP%dDSIT'%(p,i), (hpdu, 'VHCP_DSHP_P_Temp%d'%i) ) # PDU VCHP-DSHP interface temps 00250 self.mapSet('LHKP%dPHP%dRVHT'%(p,i), (hpdu, 'VHCPRes_P_Temp%d'%i) ) # PDU VCHP Reservoir temps 00251 self.mapSet('LHKP%dPHP%dXLIT'%(p,i), (hpdu, 'VHCP_XLHP_P_Temp%d'%i) ) # PDU VCHP-XLHP interface temps 00252 00253 # # Add EBM values to map 00254 # hebm = ghsk.downHEBM() 00255 # if hebm is not None: 00256 # self.mapSet('LHKEEVT' , (hebm, 'Events') ) # EBM Events 00257 # self.mapSet('LHKEGEMRS' , (hebm, 'GEMreceive') ) # EBM GEM Receive stat 00258 # self.mapSet('LHKEAEMRS' , (hebm, 'AEMreceive') ) # EBM AEM Receive stat 00259 # self.mapSet('LHKESIU0RS' , (hebm, 'SIU0receive') ) # EBM SIU Receive stat 00260 # self.mapSet('LHKESIU1RS' , (hebm, 'SIU1receive') ) # EBM SIU Receive stat 00261 # for i in range(16): 00262 # self.mapSet('LHKETEM%XRS'%i , (hebm, 'TEM%dreceive'%i) ) # EBM TEM Receive stat 00263 # for i in range(3): 00264 # self.mapSet('LHKEEPU%XRS'%i , (hebm, 'EPU%dreceive'%i) ) # EBM EPU Receive stat 00265 # self.mapSet('LHKEEPU%XTS'%i , (hebm, 'EPU%dtransmit'%i) ) # EBM EPU Transmit stat 00266 # self.mapSet('LHKESIU0TS' , (hebm, 'SIU0transmit') ) # EBM SIU Transmit stat 00267 # self.mapSet('LHKESIU1TS' , (hebm, 'SIU1transmit') ) # EBM SIU Transmit stat 00268 # self.mapSet('LHKESSRTS' , (hebm, 'SSRtransmit') ) # EBM SSR Transmit stat 00269 00270 # Still need HCOM, HCPU, LRS quantities 00271 00272 # Create all the "ST" status tags. 00273 kList = self.mapKeys() 00274 for key in kList: 00275 # Check the last two chars: 00276 if key[len(key)-2:] == 'ST': 00277 self.mapSet(key, (hnul, 'EMPTY') )# Don't put status into GHSK 00278 00279 00280 class GLATTrendMap(TrendMapBase): 00281 def __init__(self, glat): 00282 TrendMapBase.__init__(self) 00283 00284 # Add direct TEM quantities 00285 for i in range(16): 00286 gtem = glat.downTEM(i) 00287 if gtem is None: continue 00288 gtic = gtem.downTIC() 00289 # self.mapSet('LHKT%XCAL33IA'%i , (gtic, 'adc_cal_analog_3_3i') )# CAL 3.3 analog I 00290 # self.mapSet('LHKT%XCAL33ID'%i , (gtic, 'adc_cal_digital_3_3i') )# CAL 3.3 digital I 00291 self.mapSet('LHKT%XCAL33VA'%i , (gtic, 'adc_cal_analog_3_3v') )# CAL 3.3 analog V 00292 self.mapSet('LHKT%XCAL33VD'%i , (gtic, 'adc_cal_digital_3_3v') )# CAL 3.3 digital V 00293 self.mapSet('LHKT%XCALBIASI'%i, (gtic, 'psd_cal_bias_i') )# CAL bias I 00294 self.mapSet('LHKT%XCALBIASV'%i, (gtic, 'adc_cal_bias_v') )# CAL bias V 00295 self.mapSet('LHKT%XTEM33I'%i , (gtic, 'psd_tem_i') )# TEM digital 3.3 I 00296 self.mapSet('LHKT%XTEM33V'%i , (gtic, 'adc_tem_digital_3_3v') )# TEM digital 3.3 V 00297 # self.mapSet('LHKT%XTKR25ID'%i , (gtic, 'adc_tkr_digital_2_5i') )# TKR digital 2.5 I 00298 self.mapSet('LHKT%XTKR25VD'%i , (gtic, 'adc_tkr_digital_2_5v') )# TKR digital 2.5 V 00299 # self.mapSet('LHKT%XTKR15IAA'%i, (gtic, 'adc_tkr_analog_a_1_5i') )# TKR analog A 1.5 I 00300 self.mapSet('LHKT%XTKR15VAA'%i, (gtic, 'adc_tkr_analog_a_1_5v') )# TKR analog A 1.5 V 00301 # self.mapSet('LHKT%XTKR25IAB'%i, (gtic, 'adc_tkr_analog_b_2_5i') )# TKR analog B 2.5 I 00302 self.mapSet('LHKT%XTKR25VAB'%i, (gtic, 'adc_tkr_analog_b_2_5v') )# TKR analog B 2.5 V 00303 self.mapSet('LHKT%XTKRBIASI'%i, (gtic, 'psd_tkr_bias_i') )# TKR Bias I 00304 self.mapSet('LHKT%XTKRBIASV'%i, (gtic, 'adc_tkr_bias_v') )# TKR Bias V 00305 for j in range(4): 00306 self.mapSet('LHKT%XCALAF%XT0'%(i,j), (gtic, 'adc_afee%d_t0'%j) ) # CAL AFEE T0 00307 self.mapSet('LHKT%XCALAF%XT1'%(i,j), (gtic, 'adc_afee%d_t1'%j) ) # CAL AFEE T1 00308 for j in range(8): 00309 self.mapSet('LHKT%XTKRC%XT0'%(i,j) , (gtic, 'adc_tkr_c%d_t0'%j) ) # TKR CC T0 00310 self.mapSet('LHKT%XTKRC%XT1'%(i,j) , (gtic, 'adc_tkr_c%d_t1'%j) ) # TKR CC T1 00311 00312 # Add ACD FREE values to map. 12*4 + 4 = 52 values 00313 gaem = glat.downAEM() 00314 if gaem is not None: 00315 gaeq = glat.downAEM().downAEQ() 00316 self.mapSet('LHKAFR33ISUM' , (gaeq, 'env_dac_digital_3_3i') ) # AEM DAQ board FreeI 00317 self.mapSet('LHKADABTEMP' , (gaeq, 'env_dac_temp' ) ) # AEM DAQ board Temperature 00318 self.mapSet('LHKAFR28ISUM' , (gaeq, 'env_dac_hv_i' ) ) # AEM DAQ board HVI 00319 self.mapSet('LHKADAB33V' , (gaeq, 'env_dac_v' ) ) # AEM DAQ board DAQV 00320 # self.mapSet('?????????????' , (gaem, 'common_status') ) # AEM Common status 00321 # self.mapSet('?????????????' , (gaem, 'power_status' ) ) # AEM Cable status 00322 garcs = ['1la', '1rb', '2la', '2lb', '2ra', '2rb', 00323 '3la', '3rb', '4la', '4lb', '4ra', '4rb'] 00324 for i in range(12): 00325 garc = gaem.downARC(i) 00326 if garc is None: continue 00327 g = garcs[i] 00328 self.mapSet('LHKAEMFR%dT'%i , (gaeq, 'env_temp_%s'%g) ) # Temperature Free board i 00329 self.mapSet('LHKAEMFR%dVD'%i, (gaeq, 'env_vdd_%s'%g ) ) # VDD Free board i 00330 self.mapSet('LHKAEMFR%dV1'%i, (gaeq, 'env_hv1_%s'%g ) ) # HV1 Free board i 00331 self.mapSet('LHKAEMFR%dV2'%i, (gaeq, 'env_hv2_%s'%g ) ) # HV2 Free board i 00332 00333 # Add GEM values to map. 00334 ggem = glat.downGEM() 00335 if ggem is not None: 00336 pass 00337 00338 # Add PDU values to map. 2 pdus 00339 for p in range(2): 00340 gpdu = glat.downPDU(p) 00341 if gpdu is None: continue 00342 gpeq = gpdu.PEQ 00343 if gpeq is None: continue 00344 self.mapSet('LHKP%dACDBGT0'%(p), (gpeq, 'acd_bea_grid_intf_t_0') ) # PDU ACD BEA GRID temp 0 00345 self.mapSet('LHKP%dACDBGT1'%(p), (gpeq, 'acd_bea_grid_intf_t_1') ) # PDU ACD BEA GRID temp 0 00346 # self.mapSet('LHKP%dACDCNVT'%(p) , (gpeq, 'ACDconvTemp') ) # PDU ACD Power converter source 00347 # self.mapSet('LHKP%dACDPM'%(p) , (gpeq, 'ACDpowerState') ) # PDU ACD power state 00348 self.mapSet('LHKP%dACDPRT0'%(p) , (gpeq, 'acd_pmt_rail_t_0') ) # PDU ACD PMT rail temp 0 00349 self.mapSet('LHKP%dACDPRT1'%(p) , (gpeq, 'acd_pmt_rail_t_1') ) # PDU ACD PMT rail temp 1 00350 self.mapSet('LHKP%dACDPRT2'%(p) , (gpeq, 'acd_pmt_rail_t_2') ) # PDU ACD PMT rail temp 2 00351 self.mapSet('LHKP%dACDPRT3'%(p) , (gpeq, 'acd_pmt_rail_t_3') ) # PDU ACD PMT rail temp 3 00352 # self.mapSet('LHKP%dACDPSP'%(p) , (gpeq, 'ACDpowerSupply') ) # PDU ACD power supply source 00353 self.mapSet('LHKP%dACDSHT0'%(p) , (gpeq, 'acd_shell_t_0') ) # PDU ACD Shell Temp 0 00354 self.mapSet('LHKP%dACDSHT1'%(p) , (gpeq, 'acd_shell_t_1') ) # PDU ACD Shell Temp 1 00355 # 00356 # Add PDU Tem quants to map 00357 for i in range(16): 00358 self.mapSet('LHKP%dCAL%XBPT'%(p,i), (gpeq, 'cal_baseplate_t_%02d'%i) ) # PDU CAL Baseplate temp 00359 self.mapSet('LHKP%dTEM%X33V'%(p,i), (gpeq, 'tem_v_%02d'%i) ) # PDU TEM digital 3.3v 00360 self.mapSet('LHKP%dTEM%XPCT'%(p,i), (gpeq, 'tem_t_%02d'%i) ) # PDU TEM PCB temp 00361 self.mapSet('LHKP%dTEM%XPM'%(p,i) , (gpeq, 'tem_ps_t_%02d'%i) ) # PDU TEM power supply 00362 # 00363 # PDU EPU quants 00364 for i in range(3): 00365 self.mapSet('LHKP%dEPU%d33V'%(p,i) , (gpeq, 'epu_v_%d'%i) ) # PDU EPU digital 3.3v 00366 # self.mapSet('LHKP%dEPU%dCNVT'%(p,i), (gpeq, 'EPUCratePowerStat%d'%i) ) # PDU EPU Crate power state 00367 # self.mapSet('LHKP%dEPU%dPM'%(p,i) , (gpeq, 'EPUConverterStat%d') ) # PDU EPU Converter state 00368 self.mapSet('LHKP%dEPU%dT'%(p,i) , (gpeq, 'epu_t_%d'%i) ) # PDU EPU Temp 00369 # 00370 for i in range(12): 00371 self.mapSet('LHKP%dGRID%dT'%(p,i) , (gpeq, 'grid_t_%02d'%i) ) # PDU grid temp 00372 # self.mapSet('LHKP%dRAD%dT'%(p,i) , (gpeq, 'RadiatorTemp%d'%i) ) # PDU radiators temp 00373 # 00374 # self.mapSet('LHKP%dRADAFHT0'%(p), (gpeq, 'RadiatorAfrzTemp0') ) # PDU Radiator afrz temp0 00375 # self.mapSet('LHKP%dRADAFHT1'%(p), (gpeq, 'RadiatorAfrzTemp1') ) # PDU Radiator afrz temp1 00376 # for i in range(4): 00377 # self.mapSet('LHKP%dGRAD%dIFT'%(p,i), (gpeq, 'GridRadiatorTemp%d'%i) ) # PDU Grid-Rad Iface Temp 00378 # 00379 for i in range(6): 00380 self.mapSet('LHKP%dMHP%dDSIT'%(p,i), (gpeq, 'my_vchp_dshp_intf_t_%d'%i)) # PDU VCHP-DSHP interface temps 00381 self.mapSet('LHKP%dMHP%dRVHT'%(p,i), (gpeq, 'py_vchp_rsvr_htr_t_%d'%i) ) # PDU VCHP Reservoir temps 00382 self.mapSet('LHKP%dMHP%dXLIT'%(p,i), (gpeq, 'py_vchp_xlhp_intf_t_%d'%i)) # PDU VCHP-XLHP interface temps 00383 self.mapSet('LHKP%dPHP%dDSIT'%(p,i), (gpeq, 'py_vchp_dshp_intf_t_%d'%i)) # PDU VCHP-DSHP interface temps 00384 self.mapSet('LHKP%dPHP%dRVHT'%(p,i), (gpeq, 'py_vchp_rsvr_htr_t_%d'%i) ) # PDU VCHP Reservoir temps 00385 self.mapSet('LHKP%dPHP%dXLIT'%(p,i), (gpeq, 'py_vchp_xlhp_intf_t_%d'%i)) # PDU VCHP-XLHP interface temps 00386 00387 # # Add EBM values to map 00388 # gebm = glat.downEBM() 00389 # if gebm is not None: 00390 # gebmst = gebm.downEBMST() 00391 # gebmc = gebm.downEBMC() 00392 # # self.mapSet('LHKEEVT' , (gebmst, 'Events') ) # EBM Events 00393 # self.mapSet('LHKEGEMRS' , (gebmst, 'receive_gem') ) # EBM GEM Receive stat 00394 # self.mapSet('LHKEAEMRS' , (gebmst, 'receive_aem') ) # EBM AEM Receive stat 00395 # self.mapSet('LHKESIU0RS' , (gebmst, 'receive_siu0') ) # EBM SIU Receive stat 00396 # self.mapSet('LHKESIU1RS' , (gebmst, 'receive_siu1') ) # EBM SIU Receive stat 00397 # for i in range(16): 00398 # # deal with muxes in other code... 00399 # self.mapSet('LHKETEM%XRS'%i , (gebm, 'receive_tem_mux0') ) # EBM TEM Receive stat 00400 # for i in range(3): 00401 # self.mapSet('LHKEEPU%XRS'%i , (gebmst, 'receive_epu%d'%i) ) # EBM EPU Receive stat 00402 # self.mapSet('LHKEEPU%XTS'%i , (gebmst, 'transmit_epu%d'%i) ) # EBM EPU Transmit stat 00403 # self.mapSet('LHKESIU0TS' , (gebmst, 'transmit_siu0') ) # EBM SIU Transmit stat 00404 # self.mapSet('LHKESIU1TS' , (gebmst, 'transmit_siu1') ) # EBM SIU Transmit stat 00405 # self.mapSet('LHKESSRTS' , (gebmst, 'transmit_ssr') ) # EBM SSR Transmit stat 00406 00407 00408 # Still need HCOM, HCPU, LRS quantities 00409 00410 00411 00412 class ReverseTrendMap(TrendMapBase): 00413 """Class to create a reverse map from a TrendMap using 00414 gnodes as function ptrs such as GHSKTrendMap and GLATTrendMap 00415 """ 00416 def __init__(self, startMap): 00417 TrendMapBase.__init__(self) 00418 self.__map = {} 00419 for key in startMap.mapKeys(): 00420 try: 00421 node,attr = startMap.mapGet(key) 00422 nodeStr = self.__nodeString(node) 00423 newKey = nodeStr.upper()+attr.upper() 00424 self.__map[newKey] = key 00425 except TypeError: 00426 pass 00427 00428 def mapSet(self, key, value): 00429 if self.__map.has_key(key): 00430 self.__map[key] = value 00431 else: 00432 raise KeyError("TrendMap does not contain key %s.", key) 00433 00434 def mapGet(self, key): 00435 if self.__map.has_key(key): 00436 return self.__map[key] 00437 else: 00438 raise KeyError("TrendMap does not contain key %s.", key) 00439 00440 def mapKeys(self): 00441 return self.__map.keys() 00442 00443 def __nodeString(self, node): 00444 """Useful little recursive function to generate a string representation 00445 of a gDb-like object. 00446 00447 \param node Any gDb-like object. (i.e. GLAT, GHSK) 00448 Object must support getName(), up() and id() methods. 00449 """ 00450 string = '' 00451 if node is not None: 00452 string += self.__nodeString(node.up()) 00453 string += node.getName() 00454 if node.id() is not None: 00455 string += '[' + str(node.id()) + ']' 00456 string += '.' 00457 return string 00458 00459 def makeSimpleMap( trendables, trendMap): 00460 returnMap = {} 00461 # Add the timestamp 00462 returnMap['TimeStamp'] = trendables[0].time 00463 00464 for t in trendables: 00465 key = t.name 00466 atuple = trendMap.mapGet(key) 00467 # print key, atuple 00468 if atuple is not None: 00469 node, attr = atuple 00470 if node is not None: 00471 if attr != '' and attr is not None: 00472 returnMap[t.name] = node.regs[attr.lower()].get(bypass=False) 00473 # raw = node.regs[attr.lower()].get(bypass=True) 00474 elif isinstance(node, str): 00475 returnMap[t.name] = t.content['Raw Value'] 00476 return returnMap 00477 00478 if __name__ == '__main__': 00479 print "Regression test of TrendMaps" 00480 try: 00481 ghsk = GHSK(None) 00482 print " GHSK instantiation passed" 00483 except: 00484 print " Could not instantiate ghsk. aborting" 00485 exit 00486 00487 try: 00488 glat = GLAT(None) 00489 print " GLAT instantiation passed" 00490 except: 00491 print " Could not instantiate glat. aborting" 00492 exit 00493 00494 try: 00495 ghsk.readSchema("c:/panetta/LATTE/repos/hskTestSchema.xml") 00496 print " GHSK readSchema passed" 00497 except Exception, e: 00498 print " could not apply schema. Reason: %s" % e 00499 00500 try: 00501 glat.readSchema("c:/panetta/LATTE/repos/hskTestSchema.xml") 00502 print " GLAT readSchema passed" 00503 except Exception, e: 00504 print " could not apply schema. Reason: %s" % e 00505 00506 try: 00507 a = TrendMapBase() 00508 print " TrendMapBase instantiation passed" 00509 except Exception, e: 00510 print " Could not instantiate TrendMapBase. Reason: %s" % e 00511 00512 try: 00513 b = GHSKTrendMap(ghsk) 00514 print " GHSKTrendMap instantiation passed" 00515 except Exception, e: 00516 print " Could not instantiate GHSKTrendMap. Reason: %s" % e 00517 00518 try: 00519 c = GLATTrendMap(glat) 00520 print " GLATTrendMap instantiation passed" 00521 except Exception, e: 00522 print " Could not instantiate GLATTrendMap. Reason: %s" % e 00523 00524 try: 00525 d = ReverseTrendMap(b) 00526 print " ReverseTrendMap(GHSKTrendMap) instantiation passed" 00527 except Exception, e: 00528 print " Could not instantiate ReverseTrendMap(GHSKTrendMap). Reason: %s" % e 00529 00530 try: 00531 e = ReverseTrendMap(c) 00532 print " ReverseTrendMap(GLATTrendMap) instantiation passed" 00533 except Exception, e: 00534 print " Could not instantiate ReverseTrendMap(GLATTrendMap). Reason: %s" % e