Skip to content
Snippets Groups Projects
Commit c980ab71 authored by Gijs Schoonderbeek's avatar Gijs Schoonderbeek
Browse files

rb_unb2c.py second step classification tested on the HW

parent 9680beff
No related branches found
No related tags found
1 merge request!2Modified the scripts to run on Raspberry Pi.
......@@ -16,9 +16,10 @@ from UniBoard2_I2C import *
I2CBUSNR=3
class c_node:
def __int__(self, number):
def __init__(self, number):
self.node_number = number
self.pols=[]
self.set_i2c_switches()
for pol in list(LOC_POLS.keys()):
self.pols.append(c_pol(pol))
self.ddr=[]
......@@ -29,6 +30,7 @@ class c_node:
self.qsfp.append(c_qsfp(qsfp_cnt))
def read_all(self):
self.set_i2c_switches()
for pol in self.pols:
pol.read_all()
for ddr in self.ddr:
......@@ -63,35 +65,48 @@ class c_qsfp:
self.temp = 0
self.volt = 0
self.status = False
self.select_qsfp()
self.qsfp_cage = I2C(QSFP_I2C_ADDR)
self.qsfp_cage.bus = I2CBUSNR
def select_qsfp(self):
node_switch = I2C(NODE_I2C_SWITCH)
node_switch.bus = I2CBUSNR
ret_ack = node_switch.write_bytes(0x0, QSFP_PORT[self.port])
if ret_ack < 1:
print("Node I2C switch not found")
self.status = True
else:
# print("Node I2C switch not found")
self.status = False
else:
self.status = True
def read_temp(selfs):
ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2)
if ret_ack < 1 :
def read_temp(self):
self.select_qsfp()
print("read QSFP")
ret_ack, raw_ret = self.qsfp_cage.read_bytes(QSFP_TEMP, 2)
if (ret_ack < 1) | (raw_ret[:2]=='ff'):
# stri = "No QSFP found in port {0}".format(self.port)
# print(stri)
self.status=False
else:
ret_value = []
ret_value.append(int(raw_ret[:2], 16))
ret_value.append(int(raw_ret[2:], 16))
self.temp = (ret_value[0] * 256 + ret_value[1]) / 256
self.status=True
def read_volt(selfs):
ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_VOLT, 2)
if ret_ack < 1 :
def read_volt(self):
self.select_qsfp()
ret_ack, raw_ret = self.qsfp_cage.read_bytes(QSFP_VOLT, 2)
if (ret_ack < 1) | (raw_ret[:2]=='ff') :
stri = "No QSFP found in port {0}".format(self.port)
print(stri)
self.status=False
else:
ret_value=[]
ret_value.append(int(raw_ret[:2], 16))
ret_value.append(int(raw_ret[2:], 16))
self.volt = (ret_value[0] * 256 + ret_value[1]) * 0.0001
self.status=True
def read_all(self):
self.read_temp()
......@@ -99,13 +114,14 @@ class c_qsfp:
def print_status(self):
if self.status:
stri = "Slot {0} : QSFP Temperature QSFP {1:3.2f} gr. C Voltage {2:3.2f} V".format(self.port self.temp, self.volt)
stri = "Slot {0} : QSFP Temperature QSFP {1:3.2f} gr. C Voltage {2:3.2f} V".format(self.port, self.temp, self.volt)
print(stri)
class c_ddr:
def __init__(self, bank):
self.bank = bank
self.status=False
if self.bank == 0:
self.ddr_dev = I2C(MB_I_TEMP_I2C_ADDR)
else:
......@@ -125,12 +141,15 @@ class c_ddr:
def read_temp(self):
ret_ack, raw_ret = self.ddr_dev.read_bytes(MB_TEMP_REG, 2)
if ret_ack < 1:
stri = "No DDR moduel in slot {0} node {1}".format(module, node_nr)
# stri = "No DDR moduel in slot {0}".format(self.bank)
# print(stri)
self.status=False
else:
ret_value = []
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
self.temp = (((ret_value[0] & 0x1F) * 0x100) + (ret_value[1] & 0xFC)) * 0.0625
self.status=True
def read_all(self):
self.set_i2c_switch()
......@@ -138,7 +157,7 @@ class c_ddr:
def print_status(self):
if self.status:
stri = "Temperature DDR4 in slot {0} is {2:3.2f} C".format(self.bank, temp)
stri = "Temperature DDR4 in slot {0} is {1:3.2f} C".format(self.bank, self.temp)
print(stri)
......@@ -390,7 +409,7 @@ if 0:
for node_cnt in range(4):
for qsfp_cnt in range(6):
read_qsfp(node_nr = node_cnt, module=qsfp_cnt)
else:
#else:
for node_cnt in range(4):
read_pol(node_cnt, LOC_POWER_CORE)
# read_pol(-1,0x01)
......@@ -407,7 +426,8 @@ else:
if ret_ack < 1:
print("Node I2C switch not found")
node = c_node(0)
for cnt in range(2):
node = c_node(cnt)
node.read_all()
node.print_status()
#for pol in list(LOC_POLS.keys()):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment