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

gPDU.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 
00011 __facility__ = "Online"
00012 __abstract__ = "GLAST PDU functional block"
00013 __author__  = "Selim Tuvi <stuvi@slac.stanford.edu> SLAC - GLAST LAT I&T/Online"
00014 __date__     = ("$Date: 2006/07/20 22:21:30 $").split(' ')[1]
00015 __version__ = "$Revision: 2.14 $"
00016 __release__  = "$Name: R04-12-00 $"
00017 __credits__ = "SLAC"
00018 
00019 import LATTE.copyright_SLAC
00020 
00021 import time
00022 import struct
00023 import gDb
00024 import gAttr
00025 import LATTE.client.gRegister as gRegister
00026 import LATTE.client.gException as gException
00027 
00028 class GPDU(gDb.Gdb):
00029   """\brief PDU Controller.
00030 
00031   Valid Registers:
00032   - \c configuration
00033   - \c address
00034   - \c cr_statistics
00035   - \c crates
00036   - \c tems
00037   - \c acd
00038   - \c monitor
00039 
00040   Dataless commands:
00041   - \c cmd_nop
00042   - \c cmd_reset
00043 
00044   """
00045   __attrs = [
00046     # Registers
00047     gAttr.GattrReg('configuration', 0, 4),
00048     gAttr.GattrReg('address',       1, 4),
00049     gAttr.GattrReg('cr_statistics', 2, 4),
00050     gAttr.GattrReg('crates',        3, 4),
00051     gAttr.GattrReg('tems',          4, 4),
00052     gAttr.GattrReg('acd',           5, 4),
00053     gAttr.GattrReg('monitor',       6, 4),
00054     # Dataless commands
00055     gAttr.GattrDlc('cmd_nop',       0, 0),
00056     gAttr.GattrDlc('cmd_reset',     1, 0),
00057     ]
00058 
00059   __MONITOR = 6
00060 
00061   def __init__(self, client, parent, id):
00062     """\brief Initialize valid registers as Gattrs.
00063 
00064     Assign default values to members
00065     """
00066     if id < gDb.Lem.NPDUS:
00067       addr = gDb.Lem.ADDR_PDU_BASE+id
00068     else:
00069       raise KeyError("*** gPDU: GPDU id %d is invalid" %(id))
00070     self.PEQ = None
00071     flags = {'CmdrspFabric': 'On'}
00072     gDb.Gdb.__init__(self, client, parent, id, self.__attrs, addr, flags)
00073 
00074   def read(self, reg):
00075     return self.cmdrsp('PDU_read', self.addr(), reg, '!I')
00076 
00077   def load(self, reg, value):
00078     return self.cmdrsp('PDU_load', self.addr(), reg, value)
00079 
00080   def send(self, cmd):
00081     return self.cmdrsp('PDU_cmd', self.addr(), cmd)
00082 
00083   def downPEQ(self):
00084     """\brief Navigate to the GPEQ (PDU environmental monitors)
00085 
00086     \return         A GPEQ object instance
00087     """
00088     return self.PEQ
00089 
00090   def existsPEQ(self):
00091     """\brief Check if the GPEQ instance exists in the schema.
00092 
00093     \return       1 if it exists, 0 if it doesn't.
00094     """
00095     return self.PEQ != None
00096 
00097   ## private:
00098   def __removePEQ(self):
00099     self.PEQ = None
00100 
00101   def __addPEQ(self):
00102     self.PEQ = GPEQ(self.client(), self)
00103     return self.PEQ
00104 
00105 
00106 class GPEQ(gDb.Gdb):
00107   """\brief PDU Environmental Monitors.
00108 
00109   Has GPEQ specific registers and dataless commands.
00110 
00111   Valid Registers:
00112   - \c adcs_00_07
00113   - \c adcs_08_15
00114   - \c adcs_16_19
00115   """
00116   __attrs = [
00117     # Registers
00118     gAttr.GattrReg('adcs_00_07', 0, 12, gAttr.REG_READ_ONLY),
00119     gAttr.GattrReg('adcs_08_15', 1, 12, gAttr.REG_READ_ONLY),
00120     gAttr.GattrReg('adcs_16_19', 2, 12, gAttr.REG_READ_ONLY),
00121 
00122     # group 0
00123     gAttr.GattrReg('spare_v_0',               10,  2, gAttr.REG_READ_ONLY),
00124     gAttr.GattrReg('tem_v_12',                11,  2, gAttr.REG_READ_ONLY),
00125     gAttr.GattrReg('tem_v_02',                12,  2, gAttr.REG_READ_ONLY),
00126     gAttr.GattrReg('tem_t_08',                13,  2, gAttr.REG_READ_ONLY),
00127     gAttr.GattrReg('tem_t_12',                14,  2, gAttr.REG_READ_ONLY),
00128     gAttr.GattrReg('epu_t_2',                 15,  2, gAttr.REG_READ_ONLY),
00129     gAttr.GattrReg('epu_t_0',                 16,  2, gAttr.REG_READ_ONLY),
00130     gAttr.GattrReg('tem_t_06',                17,  2, gAttr.REG_READ_ONLY),
00131     gAttr.GattrReg('py_vchp_xlhp_intf_t_4',   18,  2, gAttr.REG_READ_ONLY),
00132     gAttr.GattrReg('spare_rtd_0',             19,  2, gAttr.REG_READ_ONLY),
00133     gAttr.GattrReg('spare_rtd_1',             20,  2, gAttr.REG_READ_ONLY),
00134     gAttr.GattrReg('spare_rtd_2',             21,  2, gAttr.REG_READ_ONLY),
00135     gAttr.GattrReg('spare_rtd_3',             22,  2, gAttr.REG_READ_ONLY),
00136     gAttr.GattrReg('spare_t_1',               23,  2, gAttr.REG_READ_ONLY),
00137     gAttr.GattrReg('py_grid_rad_intf_t_0',    24,  2, gAttr.REG_READ_ONLY),
00138     gAttr.GattrReg('my_grid_rad_intf_t_0',    25,  2, gAttr.REG_READ_ONLY),
00139     gAttr.GattrReg('grid_t_06',               26,  2, gAttr.REG_READ_ONLY),
00140     gAttr.GattrReg('grid_t_09',               27,  2, gAttr.REG_READ_ONLY),
00141     gAttr.GattrReg('grid_t_00',               28,  2, gAttr.REG_READ_ONLY),
00142     gAttr.GattrReg('grid_t_03',               29,  2, gAttr.REG_READ_ONLY),
00143 
00144     # group 1
00145     gAttr.GattrReg('spare_v_1',               30,  2, gAttr.REG_READ_ONLY),
00146     gAttr.GattrReg('tem_v_13',                31,  2, gAttr.REG_READ_ONLY),
00147     gAttr.GattrReg('tem_v_03',                32,  2, gAttr.REG_READ_ONLY),
00148     gAttr.GattrReg('tem_t_09',                33,  2, gAttr.REG_READ_ONLY),
00149     gAttr.GattrReg('tem_t_13',                34,  2, gAttr.REG_READ_ONLY),
00150     gAttr.GattrReg('spare_t_0',               35,  2, gAttr.REG_READ_ONLY),
00151     gAttr.GattrReg('epu_t_1',                 36,  2, gAttr.REG_READ_ONLY),
00152     gAttr.GattrReg('tem_t_07',                37,  2, gAttr.REG_READ_ONLY),
00153     gAttr.GattrReg('py_vchp_xlhp_intf_t_5',   38,  2, gAttr.REG_READ_ONLY),
00154     gAttr.GattrReg('py_rad_antifrz_htr_t_00', 39,  2, gAttr.REG_READ_ONLY),
00155     gAttr.GattrReg('acd_shell_t_0',           40,  2, gAttr.REG_READ_ONLY),
00156     gAttr.GattrReg('my_rad_antifrz_htr_t_00', 41,  2, gAttr.REG_READ_ONLY),
00157     gAttr.GattrReg('acd_shell_t_1',           42,  2, gAttr.REG_READ_ONLY),
00158     gAttr.GattrReg('spare_t_2',               43,  2, gAttr.REG_READ_ONLY),
00159     gAttr.GattrReg('py_grid_rad_intf_t_1',    44,  2, gAttr.REG_READ_ONLY),
00160     gAttr.GattrReg('my_grid_rad_intf_t_1',    45,  2, gAttr.REG_READ_ONLY),
00161     gAttr.GattrReg('grid_t_07',               46,  2, gAttr.REG_READ_ONLY),
00162     gAttr.GattrReg('grid_t_10',               47,  2, gAttr.REG_READ_ONLY),
00163     gAttr.GattrReg('grid_t_01',               48,  2, gAttr.REG_READ_ONLY),
00164     gAttr.GattrReg('grid_t_04',               49,  2, gAttr.REG_READ_ONLY),
00165 
00166     # group 2
00167     gAttr.GattrReg('spare_v_2',               50,  2, gAttr.REG_READ_ONLY),
00168     gAttr.GattrReg('tem_v_14',                51,  2, gAttr.REG_READ_ONLY),
00169     gAttr.GattrReg('tem_v_04',                52,  2, gAttr.REG_READ_ONLY),
00170     gAttr.GattrReg('tem_t_10',                53,  2, gAttr.REG_READ_ONLY),
00171     gAttr.GattrReg('tem_t_14',                54,  2, gAttr.REG_READ_ONLY),
00172     gAttr.GattrReg('tem_t_00',                55,  2, gAttr.REG_READ_ONLY),
00173     gAttr.GattrReg('tem_t_03',                56,  2, gAttr.REG_READ_ONLY),
00174     gAttr.GattrReg('tem_ps_t_06',             57,  2, gAttr.REG_READ_ONLY),
00175     gAttr.GattrReg('my_vchp_xlhp_intf_t_0',   58,  2, gAttr.REG_READ_ONLY),
00176     gAttr.GattrReg('py_rad_t_0',              59,  2, gAttr.REG_READ_ONLY),
00177     gAttr.GattrReg('py_vchp_rsvr_htr_t_0',    60,  2, gAttr.REG_READ_ONLY),
00178     gAttr.GattrReg('my_rad_t_0',              61,  2, gAttr.REG_READ_ONLY),
00179     gAttr.GattrReg('my_vchp_rsvr_htr_t_0',    62,  2, gAttr.REG_READ_ONLY),
00180     gAttr.GattrReg('acd_pmt_rail_t_0',        63,  2, gAttr.REG_READ_ONLY),
00181     gAttr.GattrReg('py_vchp_dshp_intf_t_0',   64,  2, gAttr.REG_READ_ONLY),
00182     gAttr.GattrReg('my_vchp_dshp_intf_t_0',   65,  2, gAttr.REG_READ_ONLY),
00183     gAttr.GattrReg('grid_t_08',               66,  2, gAttr.REG_READ_ONLY),
00184     gAttr.GattrReg('grid_t_11',               67,  2, gAttr.REG_READ_ONLY),
00185     gAttr.GattrReg('grid_t_02',               68,  2, gAttr.REG_READ_ONLY),
00186     gAttr.GattrReg('grid_t_05',               69,  2, gAttr.REG_READ_ONLY),
00187 
00188     # group 3
00189     gAttr.GattrReg('spare_v_3',               70,  2, gAttr.REG_READ_ONLY),
00190     gAttr.GattrReg('tem_v_15',                71,  2, gAttr.REG_READ_ONLY),
00191     gAttr.GattrReg('tem_v_05',                72,  2, gAttr.REG_READ_ONLY),
00192     gAttr.GattrReg('tem_t_11',                73,  2, gAttr.REG_READ_ONLY),
00193     gAttr.GattrReg('tem_t_15',                74,  2, gAttr.REG_READ_ONLY),
00194     gAttr.GattrReg('tem_t_01',                75,  2, gAttr.REG_READ_ONLY),
00195     gAttr.GattrReg('tem_t_04',                76,  2, gAttr.REG_READ_ONLY),
00196     gAttr.GattrReg('tem_ps_t_07',             77,  2, gAttr.REG_READ_ONLY),
00197     gAttr.GattrReg('my_vchp_xlhp_intf_t_1',   78,  2, gAttr.REG_READ_ONLY),
00198     gAttr.GattrReg('py_rad_t_1',              79,  2, gAttr.REG_READ_ONLY),
00199     gAttr.GattrReg('py_vchp_rsvr_htr_t_1',    80,  2, gAttr.REG_READ_ONLY),
00200     gAttr.GattrReg('my_rad_t_1',              81,  2, gAttr.REG_READ_ONLY),
00201     gAttr.GattrReg('my_vchp_rsvr_htr_t_1',    82,  2, gAttr.REG_READ_ONLY),
00202     gAttr.GattrReg('acd_pmt_rail_t_1',        83,  2, gAttr.REG_READ_ONLY),
00203     gAttr.GattrReg('py_vchp_dshp_intf_t_1',   84,  2, gAttr.REG_READ_ONLY),
00204     gAttr.GattrReg('my_vchp_dshp_intf_t_1',   85,  2, gAttr.REG_READ_ONLY),
00205     gAttr.GattrReg('cal_baseplate_t_08',      86,  2, gAttr.REG_READ_ONLY),
00206     gAttr.GattrReg('cal_baseplate_t_12',      87,  2, gAttr.REG_READ_ONLY),
00207     gAttr.GattrReg('cal_baseplate_t_00',      88,  2, gAttr.REG_READ_ONLY),
00208     gAttr.GattrReg('cal_baseplate_t_04',      89,  2, gAttr.REG_READ_ONLY),
00209 
00210     # group 4
00211     gAttr.GattrReg('tem_v_08',                90,  2, gAttr.REG_READ_ONLY),
00212     gAttr.GattrReg('epu_v_2',                 91,  2, gAttr.REG_READ_ONLY),
00213     gAttr.GattrReg('tem_v_06',                92,  2, gAttr.REG_READ_ONLY),
00214     gAttr.GattrReg('tem_ps_t_08',             93,  2, gAttr.REG_READ_ONLY),
00215     gAttr.GattrReg('tem_ps_t_12',             94,  2, gAttr.REG_READ_ONLY),
00216     gAttr.GattrReg('tem_t_02',                95,  2, gAttr.REG_READ_ONLY),
00217     gAttr.GattrReg('tem_t_05',                96,  2, gAttr.REG_READ_ONLY),
00218     gAttr.GattrReg('py_vchp_xlhp_intf_t_0',   97,  2, gAttr.REG_READ_ONLY),
00219     gAttr.GattrReg('my_vchp_xlhp_intf_t_2',   98,  2, gAttr.REG_READ_ONLY),
00220     gAttr.GattrReg('py_rad_t_2',              99,  2, gAttr.REG_READ_ONLY),
00221     gAttr.GattrReg('py_vchp_rsvr_htr_t_2',   100,  2, gAttr.REG_READ_ONLY),
00222     gAttr.GattrReg('my_rad_t_2',             101,  2, gAttr.REG_READ_ONLY),
00223     gAttr.GattrReg('my_vchp_rsvr_htr_t_2',   102,  2, gAttr.REG_READ_ONLY),
00224     gAttr.GattrReg('acd_pmt_rail_t_2',       103,  2, gAttr.REG_READ_ONLY),
00225     gAttr.GattrReg('py_vchp_dshp_intf_t_2',  104,  2, gAttr.REG_READ_ONLY),
00226     gAttr.GattrReg('my_vchp_dshp_intf_t_2',  105,  2, gAttr.REG_READ_ONLY),
00227     gAttr.GattrReg('cal_baseplate_t_09',     106,  2, gAttr.REG_READ_ONLY),
00228     gAttr.GattrReg('cal_baseplate_t_13',     107,  2, gAttr.REG_READ_ONLY),
00229     gAttr.GattrReg('cal_baseplate_t_01',     108,  2, gAttr.REG_READ_ONLY),
00230     gAttr.GattrReg('cal_baseplate_t_05',     109,  2, gAttr.REG_READ_ONLY),
00231 
00232     # group 5
00233     gAttr.GattrReg('tem_v_09',                110,  2, gAttr.REG_READ_ONLY),
00234     gAttr.GattrReg('spare_v_4',               111,  2, gAttr.REG_READ_ONLY),
00235     gAttr.GattrReg('tem_v_07',                112,  2, gAttr.REG_READ_ONLY),
00236     gAttr.GattrReg('tem_ps_t_09',             113,  2, gAttr.REG_READ_ONLY),
00237     gAttr.GattrReg('tem_ps_t_13',             114,  2, gAttr.REG_READ_ONLY),
00238     gAttr.GattrReg('tem_ps_t_00',             115,  2, gAttr.REG_READ_ONLY),
00239     gAttr.GattrReg('tem_ps_t_03',             116,  2, gAttr.REG_READ_ONLY),
00240     gAttr.GattrReg('py_vchp_xlhp_intf_t_1',   117,  2, gAttr.REG_READ_ONLY),
00241     gAttr.GattrReg('my_vchp_xlhp_intf_t_3',   118,  2, gAttr.REG_READ_ONLY),
00242     gAttr.GattrReg('py_rad_t_3',              119,  2, gAttr.REG_READ_ONLY),
00243     gAttr.GattrReg('py_vchp_rsvr_htr_t_3',    120,  2, gAttr.REG_READ_ONLY),
00244     gAttr.GattrReg('my_rad_t_3',              121,  2, gAttr.REG_READ_ONLY),
00245     gAttr.GattrReg('my_vchp_rsvr_htr_t_3',    122,  2, gAttr.REG_READ_ONLY),
00246     gAttr.GattrReg('acd_pmt_rail_t_3',        123,  2, gAttr.REG_READ_ONLY),
00247     gAttr.GattrReg('py_vchp_dshp_intf_t_5',   124,  2, gAttr.REG_READ_ONLY),
00248     gAttr.GattrReg('my_vchp_dshp_intf_t_5',   125,  2, gAttr.REG_READ_ONLY),
00249     gAttr.GattrReg('cal_baseplate_t_15',      126,  2, gAttr.REG_READ_ONLY),
00250     gAttr.GattrReg('cal_baseplate_t_14',      127,  2, gAttr.REG_READ_ONLY),
00251     gAttr.GattrReg('cal_baseplate_t_07',      128,  2, gAttr.REG_READ_ONLY),
00252     gAttr.GattrReg('cal_baseplate_t_06',      129,  2, gAttr.REG_READ_ONLY),
00253 
00254     # group 6
00255     gAttr.GattrReg('tem_v_10',                130,  2, gAttr.REG_READ_ONLY),
00256     gAttr.GattrReg('tem_v_00',                131,  2, gAttr.REG_READ_ONLY),
00257     gAttr.GattrReg('epu_v_0',                 132,  2, gAttr.REG_READ_ONLY),
00258     gAttr.GattrReg('tem_ps_t_10',             133,  2, gAttr.REG_READ_ONLY),
00259     gAttr.GattrReg('tem_ps_t_14',             134,  2, gAttr.REG_READ_ONLY),
00260     gAttr.GattrReg('tem_ps_t_01',             135,  2, gAttr.REG_READ_ONLY),
00261     gAttr.GattrReg('tem_ps_t_04',             136,  2, gAttr.REG_READ_ONLY),
00262     gAttr.GattrReg('py_vchp_xlhp_intf_t_2',   137,  2, gAttr.REG_READ_ONLY),
00263     gAttr.GattrReg('my_vchp_xlhp_intf_t_4',   138,  2, gAttr.REG_READ_ONLY),
00264     gAttr.GattrReg('py_rad_t_4',              139,  2, gAttr.REG_READ_ONLY),
00265     gAttr.GattrReg('py_vchp_rsvr_htr_t_4',    140,  2, gAttr.REG_READ_ONLY),
00266     gAttr.GattrReg('my_rad_t_4',              141,  2, gAttr.REG_READ_ONLY),
00267     gAttr.GattrReg('my_vchp_rsvr_htr_t_4',    142,  2, gAttr.REG_READ_ONLY),
00268     gAttr.GattrReg('acd_bea_grid_intf_t_0',   143,  2, gAttr.REG_READ_ONLY),
00269     gAttr.GattrReg('py_vchp_dshp_intf_t_4',   144,  2, gAttr.REG_READ_ONLY),
00270     gAttr.GattrReg('my_vchp_dshp_intf_t_4',   145,  2, gAttr.REG_READ_ONLY),
00271     gAttr.GattrReg('cal_baseplate_t_11',      146,  2, gAttr.REG_READ_ONLY),
00272     gAttr.GattrReg('cal_baseplate_t_10',      147,  2, gAttr.REG_READ_ONLY),
00273     gAttr.GattrReg('cal_baseplate_t_03',      148,  2, gAttr.REG_READ_ONLY),
00274     gAttr.GattrReg('cal_baseplate_t_02',      149,  2, gAttr.REG_READ_ONLY),
00275 
00276     # group 7
00277     gAttr.GattrReg('tem_v_11',                150,  2, gAttr.REG_READ_ONLY),
00278     gAttr.GattrReg('tem_v_01',                151,  2, gAttr.REG_READ_ONLY),
00279     gAttr.GattrReg('epu_v_1',                 152,  2, gAttr.REG_READ_ONLY),
00280     gAttr.GattrReg('tem_ps_t_11',             153,  2, gAttr.REG_READ_ONLY),
00281     gAttr.GattrReg('tem_ps_t_15',             154,  2, gAttr.REG_READ_ONLY),
00282     gAttr.GattrReg('tem_ps_t_02',             155,  2, gAttr.REG_READ_ONLY),
00283     gAttr.GattrReg('tem_ps_t_05',             156,  2, gAttr.REG_READ_ONLY),
00284     gAttr.GattrReg('py_vchp_xlhp_intf_t_3',   157,  2, gAttr.REG_READ_ONLY),
00285     gAttr.GattrReg('my_vchp_xlhp_intf_t_5',   158,  2, gAttr.REG_READ_ONLY),
00286     gAttr.GattrReg('py_rad_t_5',              159,  2, gAttr.REG_READ_ONLY),
00287     gAttr.GattrReg('py_vchp_rsvr_htr_t_5',    160,  2, gAttr.REG_READ_ONLY),
00288     gAttr.GattrReg('my_rad_t_5',              161,  2, gAttr.REG_READ_ONLY),
00289     gAttr.GattrReg('my_vchp_rsvr_htr_t_5',    162,  2, gAttr.REG_READ_ONLY),
00290     gAttr.GattrReg('acd_bea_grid_intf_t_1',   163,  2, gAttr.REG_READ_ONLY),
00291     gAttr.GattrReg('py_vchp_dshp_intf_t_3',   164,  2, gAttr.REG_READ_ONLY),
00292     gAttr.GattrReg('my_vchp_dshp_intf_t_3',   165,  2, gAttr.REG_READ_ONLY),
00293     gAttr.GattrReg('spare_t_3',               166,  2, gAttr.REG_READ_ONLY),
00294     gAttr.GattrReg('spare_t_4',               167,  2, gAttr.REG_READ_ONLY),
00295     gAttr.GattrReg('spare_t_5',               168,  2, gAttr.REG_READ_ONLY),
00296     gAttr.GattrReg('spare_t_6',               169,  2, gAttr.REG_READ_ONLY),
00297     ]
00298 
00299   __ADCS_BASE = 10
00300   __STALE_TMO = 1.0
00301 
00302   def __init__(self, client, parent):
00303     """\brief Initialize valid registers as Gattrs.
00304 
00305     Assign default values to members
00306     """
00307     self.__adcs = 8*[(None, 0)] # [gRegister.Register, time.time()]
00308     gDb.Gdb.__init__(self, client, parent, 0, self.__attrs)
00309 
00310   def read(self, reg):
00311     if reg < GPEQ.__ADCS_BASE:
00312       rsp = self.cmdrsp('PDU_ENV_read', self.up().addr(), reg, '!III')
00313       payloads = (rsp.payloads()[2], rsp.payloads()[1], rsp.payloads()[0])
00314       return gRegister.Register(rsp.timestamp(), rsp.status(), payloads, 'III')
00315     else:
00316       return self.__fetchReg(reg)
00317 
00318   def __fetchReg(self, reg):
00319     group = (reg - GPEQ.__ADCS_BASE) / 20
00320     which = (reg - GPEQ.__ADCS_BASE) % 20
00321     now = time.time()
00322     (rsp, rt) = self.__adcs[group]
00323     if ((rsp is None) or (now - rt) > GPEQ.__STALE_TMO):
00324       rsp = self.cmdrsp('PDU_ENV_acquire', self.up().addr(), group, '!III', '!III', '!III')
00325       for pos in [0, 3, 6]:
00326         grp      = (rsp.payloads()[pos]>>20)&0x7
00327         notready = (rsp.payloads()[pos]>>20)&0x8
00328         tmo      = (rsp.payloads()[pos]>>24)&0x7f
00329         if notready:
00330           status = gException.LATInterfaceStatus.status('OCS_BDADC')
00331           raise gException.LATInterfaceException(status)
00332         if tmo:
00333           status = gException.LATInterfaceStatus.status('OCS_TMOADC')
00334           raise gException.LATInterfaceException(status)
00335         if grp != group:
00336           status = gException.LATInterfaceStatus.status('OCS_GRPADC')
00337           raise gException.LATInterfaceException(status)
00338       self.__adcs[group] = (rsp, now)
00339     payloads = rsp.payloads()
00340     pos = (which/7)*3
00341     payload  = (long(payloads[pos]) << 64) | (long(payloads[pos+1]) << 32) | payloads[pos+2]
00342     timestamp = rsp.timestamp()
00343     status    = rsp.status()
00344     value     = int((payload >> (12 * (which % 7))) & 0xfff)
00345     payloads  = [value]
00346     return gRegister.Register(timestamp, status, payloads, 'H')

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