From 307b46bd257137cef2dd6c1690022b92f6778896 Mon Sep 17 00:00:00 2001
From: Gijs <schoonderbeek@astron.nl>
Date: Wed, 28 Sep 2022 17:13:45 +0200
Subject: [PATCH] Added read packet count

---
 spi_switch_Unb2c.py | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/spi_switch_Unb2c.py b/spi_switch_Unb2c.py
index 9ddd737..713e7ea 100644
--- a/spi_switch_Unb2c.py
+++ b/spi_switch_Unb2c.py
@@ -31,6 +31,7 @@ import sys
 import spidev
 
 DEBUG=False
+CRC = False #True # CRC or packet counter
 # We only have SPI bus 0 available to us on the Pi
 bus = 0
 
@@ -136,7 +137,7 @@ def read_link_status():
     stri = "| "
     for cnt_port in range(16):
         if ret[3]  & (0x8000 >> cnt_port) :
-            stri += "U | "
+            stri += "P | "
         else:
             stri += "  | "
     print(stri)
@@ -166,6 +167,9 @@ def read_link_status():
                 stri += "Rx: Er "
             if ret[2] & 0x40:
                 stri += "Rx FIFO Er "
+#            ret_err = read_switch(0x10+cnt,0x2E, pr_stri = False)
+#            stri += f"CRC errs: 0x{ret_err[1]:2x}"
+#            rest = write_switch_bytes(0x01,0x23, [0x40], pr_stri = False)
         else:
             stri += "link down "
         print(stri)
@@ -208,7 +212,7 @@ def read_link_status():
             read_switch(0x10+cnt,0x2e)
     if 1:
         # alternative status read out, works better for SerDes lines.
-        for prt_cnt in [9, 10, 11,12, 13,14, 15]:
+        for prt_cnt in [8, 9, 10, 11,12, 13,14, 15]:
             ret = read_switch(0x10+prt_cnt,0x28, pr_stri = False)
             stri = "Port status of " + str(prt_cnt) + " "
             if ret[1] & 0x02:
@@ -235,6 +239,19 @@ def read_link_status():
                     stri += "Rx Fifo Err "
                 if ret[2] & 0x80:
                     stri += "Tx Fifo Err "
+                ret = read_switch(0x10+prt_cnt,0x2E, pr_stri = False)
+                if CRC:
+                    rest = write_switch_bytes(0x10+prt_cnt,0x34, [0x20, 0x10], pr_stri = False)
+                    rest = write_switch_bytes(0x10+prt_cnt,0x3e, [0x00, 0x00], pr_stri = False)
+                    rest = write_switch_bytes(0x10+prt_cnt,0x20, [0xD0, 0x01], pr_stri = False)
+                    stri += f"CRC err: {ret[0]} "
+                else:
+                    rest = write_switch_bytes(0x10+prt_cnt,0x3e, [0x00, 0x00], pr_stri = False)
+                    rest = write_switch_bytes(0x10+prt_cnt,0x20, [0xD0, 0x09], pr_stri = False)
+                    stri += f"Rx packet count: {ret[0]} "
+                rest = write_switch_bytes(0x10+prt_cnt,0x22, [0x41, 0x41], pr_stri = False)
+                rest = write_switch_bytes(0x10+prt_cnt,0x3e, [0x00, 0x00], pr_stri = False)
+                rest = write_switch_bytes(0x10+prt_cnt,0x2E, [0x00, 0x00], pr_stri = False)
             else:
                 stri += "Down "
             print(stri)
-- 
GitLab