commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] gnuradio-examples/python/networking measurement...


From: Eric Blossom
Subject: [Commit-gnuradio] gnuradio-examples/python/networking measurement...
Date: Thu, 22 Jun 2006 23:41:52 +0000

CVSROOT:        /sources/gnuradio
Module name:    gnuradio-examples
Changes by:     Eric Blossom <eb>       06/06/22 23:41:52

Modified files:
        python/networking: measurement_slave.py 

Log message:
        more work-in-progress

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnuradio-examples/python/networking/measurement_slave.py?cvsroot=gnuradio&r1=1.4&r2=1.5

Patches:
Index: measurement_slave.py
===================================================================
RCS file: 
/sources/gnuradio/gnuradio-examples/python/networking/measurement_slave.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- measurement_slave.py        22 Jun 2006 20:13:06 -0000      1.4
+++ measurement_slave.py        22 Jun 2006 23:41:52 -0000      1.5
@@ -27,6 +27,7 @@
 import optparse
 import random
 from gnuradio.eng_option import eng_option
+import gnuradio.gr.gr_threading as _threading
 
 LOOP_TIMEOUT = 0.001
 BROADCAST_ADDR = '255.255.255.255'
@@ -115,21 +116,19 @@
         return result
 
 
-class udp_listener(asyncore.dispatcher):
-    """
-    Listens for datatrams on UDP broadcast socket.
-    Writes note to log file for each packet received.
-    """
-    def __init__(self, udp_socket):
-        asyncore.dispatcher.__init__(self, sock=udp_socket)
-        
-    def writable(self):
-        return False
-
-    def handle_read(self):
-        pkt, sender = self.recvfrom(10000)
+class pkt_receiver_thread(_threading.Thread):
+    def __init__(self, socket):
+        _threading.Thread.__init__(self)
+        self.setDaemon(1)
+        self.socket = socket
+        self.keep_running = True
+        self.start()
+
+    def run(self):
+        while self.keep_running:
+            pkt, sender = self.socket.recvfrom(10000)
         if pkt:
-            if len(pkt > 2):
+                if len(pkt) > 2:
                 t = struct.unpack('!H', pkt[0:2])
                 seqno = t[0]
             else:
@@ -138,9 +137,6 @@
             logfile.write('RCVD seqno %4d len %4d from %s\n' % (seqno, 
len(pkt), sender))
             logfile.flush()
 
-    def handle_close(self):
-        self.close()
-
 
 class control_server(gr_dispatcher):
     def __init__(self, socket, addr, udp_socket, verbose=False):
@@ -158,7 +154,7 @@
         if pkt:
             annotate = 'ANNOTATE'
             if pkt.startswith(annotate):
-                logfile.write(pkt[len(annotate):])
+                logfile.write(pkt[len(annotate)+1:])
                 logfile.write('\n')
                 logfile.flush()
             elif pkt.startswith('SEND'):
@@ -198,14 +194,16 @@
     payload = make_random_payload(size - 2)
     for n in range(npkts):
         pkt = struct.pack('!H', n) + payload
-        udp_socket.sendall(pkt)
+        udp_socket.sendto(pkt, (BROADCAST_ADDR, BROADCAST_PORT))
+        #udp_socket.sendall(pkt)
 
 
 def open_udp_broadcast_socket(gr0_host_ip, port):
     s  = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    s.bind((gr0_host_ip, port))
+#    s.bind((gr0_host_ip, port))
+    s.bind(('', port))
     s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
-    s.connect((BROADCAST_ADDR, port))
+#    s.connect((BROADCAST_ADDR, port))
     return s
 
 
@@ -231,7 +229,7 @@
         logfile = file(options.logfile, 'w')
 
     udp_socket = open_udp_broadcast_socket(gr0_ip_addr, BROADCAST_PORT)
-    U = udp_listener(udp_socket)
+    R = pkt_receiver_thread(udp_socket)
     L = control_port_listener(CONTROL_PORT, udp_socket=udp_socket, 
verbose=options.verbose)
     asyncore.loop(LOOP_TIMEOUT)
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]