aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/usrp3/x300/x300_debug.py
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usrp3/x300/x300_debug.py')
-rwxr-xr-xfirmware/usrp3/x300/x300_debug.py95
1 files changed, 45 insertions, 50 deletions
diff --git a/firmware/usrp3/x300/x300_debug.py b/firmware/usrp3/x300/x300_debug.py
index c9bcbb138..5fb55dc9d 100755
--- a/firmware/usrp3/x300/x300_debug.py
+++ b/firmware/usrp3/x300/x300_debug.py
@@ -1,3 +1,6 @@
+from __future__ import print_function
+from builtins import range
+from builtins import object
#!/usr/bin/env python
#
# Copyright 2010-2011 Ettus Research LLC
@@ -16,21 +19,20 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-import optparse
+import argparse
import math
import socket
import struct
-
########################################################################
# constants
########################################################################
-B250_FW_COMMS_UDP_PORT = 49152
+X300_FW_COMMS_UDP_PORT = 49152
-B250_FW_COMMS_FLAGS_ACK = 1
-B250_FW_COMMS_FLAGS_ERROR = 2
-B250_FW_COMMS_FLAGS_POKE32 = 4
-B250_FW_COMMS_FLAGS_PEEK32 = 8
+X300_FW_COMMS_FLAGS_ACK = 1
+X300_FW_COMMS_FLAGS_ERROR = 2
+X300_FW_COMMS_FLAGS_POKE32 = 4
+X300_FW_COMMS_FLAGS_PEEK32 = 8
#UDP_CTRL_PORT = 49183
UDP_MAX_XFER_BYTES = 1024
@@ -66,7 +68,7 @@ class ctrl_socket(object):
def __init__(self, addr):
self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self._sock.settimeout(UDP_TIMEOUT)
- self._sock.connect((addr, B250_FW_COMMS_UDP_PORT))
+ self._sock.connect((addr, X300_FW_COMMS_UDP_PORT))
self.set_callbacks(lambda *a: None, lambda *a: None)
#self.init_update() #check that the device is there
@@ -79,63 +81,61 @@ class ctrl_socket(object):
return self._sock.recv(UDP_MAX_XFER_BYTES)
def read_router_stats(self):
- print
- print(" "),
+ print()
+ print((" "), end=' ')
ports = [' eth0',' eth1',' radio0',' radio1',' compute0',' compute1',' compute2',' pcie']
for in_prt in ports:
- print("%s" % in_prt),
+ print(("%s" % in_prt), end=' ')
print(" Egress Port")
- print(" "),
+ print((" "), end=' ')
for in_prt in range (0, 8):
- print("____________"),
- print
+ print(("____________"), end=' ')
+ print()
for in_prt in range (0, 8):
- print("%s |" % ports[in_prt]),
+ print(("%s |" % ports[in_prt]), end=' ')
for out_prt in range (0, 8):
- out_pkt = pack_reg_peek_poke_fmt(B250_FW_COMMS_FLAGS_PEEK32|B250_FW_COMMS_FLAGS_ACK, seq(), 0xA000+256+((in_prt*8+out_prt)*4), 0)
+ out_pkt = pack_reg_peek_poke_fmt(X300_FW_COMMS_FLAGS_PEEK32|X300_FW_COMMS_FLAGS_ACK, seq(), 0xA000+256+((in_prt*8+out_prt)*4), 0)
in_pkt = self.send_and_recv(out_pkt)
(flags, rxseq, addr, data) = unpack_reg_peek_poke_fmt(in_pkt)
- if flags & B250_FW_COMMS_FLAGS_ERROR == B250_FW_COMMS_FLAGS_ERROR:
- raise Exception("B250 peek returns error code")
- print("%10d " % (data)),
- print
- print
+ if flags & X300_FW_COMMS_FLAGS_ERROR == X300_FW_COMMS_FLAGS_ERROR:
+ raise Exception("X300 peek returns error code")
+ print(("%10d " % (data)), end=' ')
+ print()
+ print()
print("Ingress Port")
- print
+ print()
def peek(self,peek_addr):
- out_pkt = pack_reg_peek_poke_fmt(B250_FW_COMMS_FLAGS_PEEK32|B250_FW_COMMS_FLAGS_ACK, seq(), peek_addr, 0)
+ out_pkt = pack_reg_peek_poke_fmt(X300_FW_COMMS_FLAGS_PEEK32|X300_FW_COMMS_FLAGS_ACK, seq(), peek_addr, 0)
in_pkt = self.send_and_recv(out_pkt)
(flags, rxseq, addr, data) = unpack_reg_peek_poke_fmt(in_pkt)
- if flags & B250_FW_COMMS_FLAGS_ERROR == B250_FW_COMMS_FLAGS_ERROR:
- raise Exception("B250 peek of address %d returns error code" % (addr))
- print("PEEK of address %d(0x%x) reads %d(0x%x)" % (addr,addr,data,data))
+ if flags & X300_FW_COMMS_FLAGS_ERROR == X300_FW_COMMS_FLAGS_ERROR:
+ raise Exception("X300 peek of address %d returns error code" % (addr))
+ return data
def poke(self,poke_addr,poke_data):
- out_pkt = pack_reg_peek_poke_fmt(B250_FW_COMMS_FLAGS_POKE32|B250_FW_COMMS_FLAGS_ACK, seq(), poke_addr, poke_data)
+ out_pkt = pack_reg_peek_poke_fmt(X300_FW_COMMS_FLAGS_POKE32|X300_FW_COMMS_FLAGS_ACK, seq(), poke_addr, poke_data)
in_pkt = self.send_and_recv(out_pkt)
(flags, rxseq, addr, data) = unpack_reg_peek_poke_fmt(in_pkt)
- if flags & B250_FW_COMMS_FLAGS_ERROR == B250_FW_COMMS_FLAGS_ERROR:
- raise Exception("B250 peek of address %d returns error code" % (addr))
- print("POKE of address %d(0x%x) with %d(0x%x)" % (poke_addr,poke_addr,poke_data,poke_data) )
+ if flags & X300_FW_COMMS_FLAGS_ERROR == X300_FW_COMMS_FLAGS_ERROR:
+ raise Exception("X300 peek of address %d returns error code" % (addr))
########################################################################
# command line options
########################################################################
-def get_options():
- parser = optparse.OptionParser()
- parser.add_option("--addr", type="string", help="USRP-N2XX device address", default='')
- parser.add_option("--list", action="store_true", help="list possible network devices", default=False)
- parser.add_option("--peek", type="int", help="Read from memory map", default=None)
- parser.add_option("--poke", type="int", help="Write to memory map", default=None)
- parser.add_option("--data", type="int", help="Data for poke", default=None)
- parser.add_option("--stats", action="store_true", help="Display SuperMIMO Network Stats", default=False)
- (options, args) = parser.parse_args()
-
- return options
+def auto_int(x):
+ return int(x, 0)
+def get_options():
+ parser = argparse.ArgumentParser(description='Debug utility for the USRP X3X0')
+ parser.add_argument('--addr', type=str, default=None, required=True, help='IP Address of USRP-X3X0 device')
+ parser.add_argument('--peek', type=auto_int, default=None, help='Read from memory map')
+ parser.add_argument('--poke', type=auto_int, default=None, help='Write to memory map')
+ parser.add_argument('--data', type=auto_int, default=None, help='Data for poke')
+ parser.add_argument('--stats', action='store_true', default=False, help='Display crossbar network Stats')
+ return parser.parse_args()
########################################################################
# main
@@ -143,14 +143,6 @@ def get_options():
if __name__=='__main__':
options = get_options()
-
- if options.list:
- print('Possible network devices:')
- print(' ' + '\n '.join(enumerate_devices()))
- exit()
-
- if not options.addr: raise Exception('no address specified')
-
status = ctrl_socket(addr=options.addr)
if options.stats:
@@ -159,9 +151,12 @@ if __name__=='__main__':
if options.peek is not None:
addr = options.peek
- status.peek(addr)
+ data = status.peek(addr)
+ print("PEEK of address %d(0x%x) reads %d(0x%x)" % (addr,addr,data,data))
if options.poke is not None and options.data is not None:
addr = options.poke
data = options.data
status.poke(addr,data)
+ print("POKE of address %d(0x%x) with %d(0x%x)" % (addr,addr,data,data))
+