[Tinyos-commits] CVS: tinyos-1.x/tools/python/apps Listen.py, 1.1,
1.2
Kamin Whitehouse
kaminw at users.sourceforge.net
Wed Sep 28 03:04:54 PDT 2005
Update of /cvsroot/tinyos/tinyos-1.x/tools/python/apps
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25430/apps
Modified Files:
Listen.py
Log Message:
added multiple layers of verbosity, a help menu, and pause functionality. for some reason, i cant exit cleanly and the user needs to type "reset" after quitting
Index: Listen.py
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/tools/python/apps/Listen.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Listen.py 28 Sep 2005 07:01:20 -0000 1.1
--- Listen.py 28 Sep 2005 10:04:52 -0000 1.2
***************
*** 24,33 ****
#
! import sys, threading
import pytos.util.NescApp as NescApp
import pytos.util.ParseArgs as ParseArgs
import pytos.util.MessageSnooper as MessageSnooper
import pytos.Comm as Comm
class Listen( object ) :
--- 24,78 ----
#
! import sys, threading, time
import pytos.util.NescApp as NescApp
import pytos.util.ParseArgs as ParseArgs
import pytos.util.MessageSnooper as MessageSnooper
+ import pytos.util.KeyPress as KeyPress
import pytos.Comm as Comm
+ def noReturn(msg) :
+ sys.stdout.write("%25s" % "(am=%3d) %s " % (msg.amType, msg.nescType))
+ sys.stdout.flush()
+
+ def nameAndType(msg) :
+ print "(am=%3d) %s" % (msg.amType, msg.nescType)
+
+ def printNamesOnly(msg, maxLevel=3, myLevel=0) :
+ if myLevel==0 :
+ print "%s%s" % (printNamesOnly(msg.parentMsg, maxLevel, 1),
+ "%25s" % "(am=%3d) %s" % (msg.amType, msg.nescType))
+ else :
+ if type(maxLevel) == int and maxLevel < myLevel:
+ return ""
+ elif msg == None:
+ return "%s%28s" % (printNamesOnly(msg, maxLevel, myLevel+1), "")
+ else :
+ return "%s%s => " % (printNamesOnly(msg.parentMsg, maxLevel, myLevel+1),
+ "(am=%3d) %13s" % (msg.amType, msg.nescType))
+
+ def printNormal(msg) :
+ print msg
+
+ def printParentNames(msg, maxLevel=3, myLevel=0) :
+ if myLevel==0 :
+ print "%s%s" % (printParentNames(msg.parentMsg, maxLevel, 1), str(msg))
+ else :
+ if type(maxLevel) == int and maxLevel < myLevel:
+ return ""
+ elif msg == None:
+ return "%s%30s" % (printParentNames(msg, maxLevel, myLevel+1), "")
+ else :
+ return "%s%s => " % (printParentNames(msg.parentMsg, maxLevel, myLevel+1),
+ "(am=%3d) %15s" % (msg.amType, msg.nescType))
+
+ def printParents(msg, maxLevel='all', myLevel=0) :
+ if myLevel==0 :
+ print "%s%s" % (printParents(msg.parentMsg, maxLevel, 1), str(msg))
+ else :
+ if msg == None or (type(maxLevel) == int and maxLevel < myLevel) :
+ return ""
+ else:
+ return "%s%s" % (printParents(msg.parentMsg, maxLevel, myLevel+1), str(msg))
+
class Listen( object ) :
***************
*** 47,68 ****
def __init__( self , snooper ) :
! msgQueue = Comm.MessageQueue(1)
self.snooper = snooper
self.snooper.register( msgQueue )
self.running = True
! # #start a thread to process the messages (make daemon so it dies when tk is killed)
! # msgThread = threading.Thread(target=self.processMessages,
! # args=(msgQueue,))
! # #msgThread.setDaemon(True)
! # msgThread.start()
!
! # def processMessages(self, msgQueue) :
while True :
(addr,msg) = msgQueue.get()
if self.running == True:
! print msg
def stop(self) :
self.running = False
def start(self) :
--- 92,209 ----
def __init__( self , snooper ) :
! self.usage = """
! h : help
! p : pause
! q : quit
! 1-9 : verbosity
! c : toggle colors"""
!
! print "\nType \"h\" for help\n"
! msgQueue = Comm.MessageQueue(10)
! self.keyPress = KeyPress.KeyPress()
self.snooper = snooper
self.snooper.register( msgQueue )
self.running = True
! self.pausing = False
! self.verbosity = '4'
! self.numLostPackets = 0
! self.numPrintedChars = 0
!
! #start a thread to process the messages
! self.msgThread = threading.Thread(target=self.processMessages,
! args=(msgQueue,))
! #start a thread to process the key presses (make daemon so it dies when tk is killed)
! keyThread = threading.Thread(target=self.readKeys)
! keyThread.setDaemon(True)
! keyThread.start()
! self.msgThread.start()
!
! def processMessages(self, msgQueue) :
while True :
(addr,msg) = msgQueue.get()
if self.running == True:
! self.printMsg(msg)
! else :
! self.numLostPackets += 1
!
!
! def readKeys(self) :
! while True :
! try :
! key = self.keyPress.getChar(blocking=True)
! { 'q': self.msgThread._Thread__stop, #sys.exit,
! 'h': self.help,
! '1': lambda : self.setVerbosity(key),
! '2': lambda : self.setVerbosity(key),
! '3': lambda : self.setVerbosity(key),
! '4': lambda : self.setVerbosity(key),
! '5': lambda : self.setVerbosity(key),
! '6': lambda : self.setVerbosity(key),
! '7': lambda : self.setVerbosity(key),
! '8': lambda : self.setVerbosity(key),
! '9': lambda : self.setVerbosity(key),
! 'c': self.colors,
! 'p': self.pause
! }[key]()
! except Exception, e:
! print e.args[0]
! print "key %s not understood. Press \"h\" for help" % key
!
! def setVerbosity(self, verbosity) :
! self.verbosity = verbosity
!
! def printMsg(self, msg) :
! { '1' : noReturn,
! '2' : nameAndType,
! '3' : lambda msg: printNamesOnly(msg),
! '4' : printNormal,
! '5' : lambda msg: printParentNames(msg),
! '6' : lambda msg: printParents(msg,1),
! '7' : lambda msg: printParents(msg,2),
! '8' : lambda msg: printParents(msg,3),
! '9' : lambda msg: printParents(msg,'all')
! }[self.verbosity](msg)
!
! def printLostPackets(self):
+
+ banner = "\nHit any key to resume. Messages lost: "
+ sys.stdout.write(banner)
+ while True:
+ time.sleep(1)
+ c= self.keyPress.getChar(blocking=False)
+ if c == "":
+ strg = ""
+ for i in range(self.numPrintedChars) :
+ strg += "\b"
+ strg = "%s%d" % (strg,self.numLostPackets)
+ self.numPrintedChars = len(strg)-self.numPrintedChars
+ sys.stdout.write(strg)
+ sys.stdout.flush()
+ else:
+ print
+ break
+
+ def help(self) :
+ self.stop()
+ print " Current verbosity: %s" % self.verbosity
+ print self.usage
+ self.printLostPackets()
+ self.start()
+
+ def pause(self) :
+ self.stop()
+ self.printLostPackets()
+ self.start()
+
+
+
+ def colors(self) :
+ print "Sorry, no colors yet\n"
+
def stop(self) :
self.running = False
+ self.numLostPackets = 0
+ self.numPrintedChars = 0
def start(self) :
More information about the Tinyos-commits
mailing list