diff options
Diffstat (limited to 'firmware/usrp3/x300/x300_debug.py')
-rwxr-xr-x | firmware/usrp3/x300/x300_debug.py | 95 |
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)) + |