[Top][All Lists]
[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)