From 019e19fff70e3c411e0691459bb4fe1f32695688 Mon Sep 17 00:00:00 2001
From: GijsSchoonderbeek <schoonderbeek@astron.nl>
Date: Mon, 10 May 2021 14:33:24 +0200
Subject: [PATCH] Updated the script so they can be tested on the HW. (read
 multiple bytes are now returned in one string so it is more in line with the
 other I2C interface.

---
 I2C_serial_pi.py |  4 ++--
 rd_unb2c.py      | 21 +++++++++++----------
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/I2C_serial_pi.py b/I2C_serial_pi.py
index d3f7217..8ddf3a3 100644
--- a/I2C_serial_pi.py
+++ b/I2C_serial_pi.py
@@ -35,9 +35,9 @@ class I2C:
         bus = smbus.SMBus(self.bus_nr)
         try:
             rd_value = bus.read_i2c_block_data(self.I2C_Address, register, bytes_to_read)
-            ret_value = []
+            ret_value = ''
             for cnt in range(bytes_to_read):
-                ret_value.append(hex(rd_value[cnt])[2:]) 
+                ret_value += (hex(rd_value[cnt])[2:])
             ret_ack = 1
         except IOError, err:
             ret_ack = 0
diff --git a/rd_unb2c.py b/rd_unb2c.py
index 114cc1d..13d2b0e 100644
--- a/rd_unb2c.py
+++ b/rd_unb2c.py
@@ -32,8 +32,7 @@ def rw_eeprom(value=0xAB):
     else:
         pr_stri = "Found device at address 0x{:02x}".format(I2C_eeprom.I2C_Address)
         print(pr_stri)
-        ret_ack = I2C_eeprom.write_bytes(0x00, value)
-#        sleep(0.25)
+        I2C_eeprom.write_bytes(0x00, value)
         ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1)
         stri = "Wrote to EEPROM: {0}, Read from EEPROM: {1} ".format(value, ret_value)
         print(stri)
@@ -102,8 +101,8 @@ def read_ddr(node_nr = 0, module=0):
                 stri = "No DDR moduel in slot {0} node  {1}".format(module, node_nr)
             else:
                 ret_value=[]
-                ret_value.append(int(raw_ret[0],16))
-                ret_value.append(int(raw_ret[1],16))
+                ret_value.append(int(raw_ret[:2],16))
+                ret_value.append(int(raw_ret[2:],16))
                 temp = (((ret_value[0] & 0x1F) * 0x100) + (ret_value[1] & 0xFC)) * 0.0625
                 stri = "Temperature DDR4 in slot {0} node  {1} is {2:3.2f} C".format(module, node_nr, temp)
             print(stri)
@@ -124,19 +123,19 @@ def read_qsfp(node_nr = 0, module=0):
             QSFP_cage = I2C(QSFP_I2C_ADDR)
             QSFP_cage.bus = I2CBUSNR
             ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2)
-            if (ret_ack < 1) | (raw_ret[0]=='ff'):
+            if (ret_ack < 1) | (raw_ret[:2]=='ff'):
                 stri = "No QSFP module in slot {0} node  {1}".format(module, node_nr)
                 print(stri)
             else:
                 ret_value=[]
-                ret_value.append(int(raw_ret[0],16))
-                ret_value.append(int(raw_ret[1],16))
+                ret_value.append(int(raw_ret[:2],16))
+                ret_value.append(int(raw_ret[2:],16))
                 temp_in_mod = (ret_value[0] * 256 + ret_value[1]) / 256
                 stri =  "Temperature QSFP in slot {0} node  {1} is {2:3.2f} gr. C".format(module, node_nr, temp_in_mod)
                 print(stri)
                 ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_VOLT, 2)
-                ret_value.append(int(raw_ret[0],16))
-                ret_value.append(int(raw_ret[1],16))
+                ret_value.append(int(raw_ret[:2],16))
+                ret_value.append(int(raw_ret[2:],16))
                 Power_in_mod = (ret_value[0] * 256 + ret_value[1]) * 0.0001
                 stri =  "Voltage QSFP in slot {0} node  {1} is {2:3.2f} V".format(module, node_nr, Power_in_mod)
                 print(stri)
@@ -148,6 +147,8 @@ else:
     for node_cnt in range(4):
         for module_cnt in range(2):
             read_ddr(node_nr=node_cnt,module=module_cnt)
+    for node_cnt in range(4):
         for qsfp_cnt in range(6):
             read_qsfp(node_nr = node_cnt, module=qsfp_cnt)
-
+    for node_cnt in range(4):
+        read_pol(LOC_POWER_CORE)
-- 
GitLab