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

gFabrics.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__ = "Class used to initialize command/response and event fabrics"
00013 __author__  = "A. Perazzo <perazzo@slac.stanford.edu> SLAC - GLAST LAT I&T/Online"
00014 __date__    = ("$Date: 2004/12/14 19:22:03 $").split(' ')[1]
00015 __version__ = "$Revision: 2.5 $"
00016 __release__ = "$Name: R04-12-00 $"
00017 __credits__ = "SLAC"
00018 
00019 import LATTE.copyright_SLAC
00020 
00021 from LATTE.client.gException import LATInterfaceException
00022 from LATTE.client.gBits import population
00023 
00024 
00025 class Fabrics(object):
00026   def __init__(self, lcb):
00027     self.__lcb = lcb
00028     
00029   def init_cmdrsp(self, cmdmask, cmdmset, pdumask, secmask):
00030     initdelay = 1
00031     tmo = self.__adjusttmo(initdelay, cmdmask)
00032     rsp = self.__lcb.cmdrsp('init_cmdrsp_fabric',
00033                             cmdmask, cmdmset, pdumask, secmask)
00034     self.__checkrsp(rsp, tmo)
00035     
00036   def insert_cmdrsp(self, cmdmask, pdumask, secmask, arcmask, ctrmask):
00037     insertdelay = 1.5
00038     tmo = self.__adjusttmo(insertdelay, cmdmask, arcmask, ctrmask)
00039     rsp = self.__lcb.cmdrsp('insert_cmdrsp_fabric',
00040                             cmdmask, pdumask, secmask, arcmask, ctrmask)
00041     self.__checkrsp(rsp, tmo)
00042     
00043   def extract_cmdrsp(self, cmdmask, pdumask, secmask, arcmask, ctrmask):
00044     extractdelay = 0.5
00045     tmo = self.__adjusttmo(extractdelay, cmdmask, arcmask, ctrmask)
00046     rsp = self.__lcb.cmdrsp('extract_cmdrsp_fabric',
00047                             cmdmask, pdumask, secmask, arcmask, ctrmask)
00048     self.__checkrsp(rsp, tmo)
00049     
00050   def init_event(self, evtmask, evtmset):
00051     rsp = self.__lcb.cmdrsp('init_event_fabric', evtmask, evtmset)
00052     self.__checkrsp(rsp)
00053    
00054   def insert_event(self, evtmask):
00055     rsp = self.__lcb.cmdrsp('insert_event_fabric', evtmask)
00056     self.__checkrsp(rsp)
00057    
00058   def extract_event(self, evtmask):
00059     rsp = self.__lcb.cmdrsp('extract_event_fabric', evtmask)
00060     self.__checkrsp(rsp)
00061    
00062   def __adjusttmo(self, delay, cmdmask, arcmask=0, ctrmask=0):
00063     tmo = self.__lcb.client().gettimeout()
00064     components  = population(0x3800ffffL & cmdmask) # EPUs+TEMs
00065     components += population(0x00000fffL & arcmask) # Free boards
00066     components += population(0xffffffffL & ctrmask) # CALs and TRKs
00067     if components:
00068       timeout = tmo + delay*components
00069       self.__lcb.client().settimeout(timeout)
00070     return tmo
00071 
00072   def __checkrsp(self, rsp, tmo=None):
00073     if tmo is not None:
00074       if tmo != self.__lcb.client().gettimeout():
00075         self.__lcb.client().settimeout(tmo)
00076     if rsp.status() & 0x3:
00077       raise LATInterfaceException(rsp.status())

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