Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

TrendMaps.py

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

Generated on Fri Jul 21 13:26:33 2006 for LATTE R04-12-00 by doxygen 1.4.3