00001
00002
00003
00004
00005
00006
00007
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
00040
00041
00042 def process(self, telemetry):
00043 """!\brief Callback method for the telemetry handler.
00044
00045 \param telemetry Raw telemetry packet
00046 """
00047
00048
00049
00050
00051
00052
00053 dispatcher.sendExact(telemetry.apid(), self, telemetry)
00054
00055
00056
00057
00058
00059
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
00068 for apid in apids:
00069
00070
00071
00072
00073 dispatcher.connect(callback, signal=apid, sender=self)
00074
00075
00076
00077
00078
00079
00080
00081
00082
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
00091 for apid in apids:
00092 dispatcher.disconnect(callback, signal=apid, sender=self)
00093
00094
00095
00096
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
00108 return False
00109 return True
00110