seTelemetryHandler.py

Go to the documentation of this file.
00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2005
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__ = "Diagnostics telemetry handler class"
00012 __author__   = "S. Tuvi <stuvi@SLAC.Stanford.edu> SLAC - GLAST LAT I&T/Online"
00013 __date__     = "2005/09/19 10:00:00"
00014 __updated__  = "$Date: 2005/11/10 02:55:07 $"
00015 __version__  = "$Revision: 1.5 $"
00016 __release__  = "$Name: HEAD $"
00017 __credits__  = "SLAC"
00018 
00019 import LICOS.copyright_SLAC
00020 
00021 from VSC import VscHandling
00022 
00023 import LICOS.core.dispatch.dispatcher as dispatcher
00024 
00025 import threading
00026 
00027 class seTelemetryHandler(VscHandling.TelemetryHandler):
00028   """!\brief Script Engine telemetry handler class.
00029 
00030   """
00031   def __init__(self, apidRangeList):
00032     """!\brief seTelemetryHandler constructor.
00033 
00034     \param apidRangeList List containing from and to apids
00035     """
00036     VscHandling.TelemetryHandler.__init__(self)
00037     for (fromApId, toApId) in apidRangeList:
00038       self.handle(fromApId, toApId)
00039     #self.callbacks = {}
00040     #self.__lock = threading.Lock()
00041 
00042   def process(self, telemetry):
00043     """!\brief Callback method for the telemetry handler.
00044 
00045     \param telemetry Raw telemetry packet
00046     """
00047     #self.__lock.acquire()
00048     #if telemetry.apid() in self.callbacks:
00049     #  for callback in self.callbacks[telemetry.apid()]:
00050     #    callback(telemetry)
00051     #if id(self) in dispatcher.connections:
00052     #  if telemetry.apid() in dispatcher.connections[id(self)]:
00053     dispatcher.sendExact(telemetry.apid(), self, telemetry)
00054 
00055     #print "VscTelemetryHandler called apid 0x%x " \
00056     #      "at seconds 0x%x useconds 0x%x length %d" % \
00057     #        (telemetry.apid(), telemetry.secs(), telemetry.usecs(),
00058     #         telemetry.length()+1)
00059     #self.__lock.release()
00060 
00061   def register(self, apids, callback):
00062     """!\brief Register a callback for a given telemetry apid.
00063 
00064     \param apids    Telemetry apids
00065     \param callback Callback method
00066     """
00067     #self.__lock.acquire()
00068     for apid in apids:
00069       #if apid not in self.callbacks:
00070       #  self.callbacks[apid] = [callback]
00071       #else:
00072       #  self.callbacks[apid].append(callback)
00073       dispatcher.connect(callback, signal=apid, sender=self)
00074     #self.__lock.release()
00075 
00076 #  def clear(self):
00077 #    """!\brief Clear all registered callbacks.
00078 
00079 #    """
00080 #    self.__lock.acquire()
00081 #    self.callbacks.clear()
00082 #    self.__lock.release()
00083 
00084   def unregister(self, apids, callback):
00085     """!\brief Unregister a registered callback.
00086 
00087     \param apids    Telemetry apids
00088     \param callback Callback method
00089     """
00090     #self.__lock.acquire()
00091     for apid in apids:
00092       dispatcher.disconnect(callback, signal=apid, sender=self)
00093       #if apid in self.callbacks:
00094       #  if callback in self.callbacks[apid]:
00095       #    self.callbacks[apid].remove(callback)
00096     #self.__lock.release()
00097 
00098   def isregistered(self, apids, callback):
00099     """!\brief Check if \a apids are registered with \a callback.
00100 
00101     \param apids    Telemetry apids
00102     \param callback Callback method
00103     """
00104     for apid in apids:
00105       receivers = dispatcher.liveReceivers(dispatcher.getReceivers(self, apid))
00106       if callback not in receivers:
00107     #  if callback not in self.callbacks[apid]:
00108         return False
00109     return True
00110 

Generated on Thu Apr 27 20:52:43 2006 for LICOS L02-01-00 by doxygen 1.4.6-NO