Skip to content
Snippets Groups Projects
Select Git revision
  • 3a0616773566b46b9e7c74a666211cd4e40f3506
  • master default protected
  • L2SS-1914-fix_job_dispatch
  • TMSS-3170
  • TMSS-3167
  • TMSS-3161
  • TMSS-3158-Front-End-Only-Allow-Changing-Again
  • TMSS-3133
  • TMSS-3319-Fix-Templates
  • test-fix-deploy
  • TMSS-3134
  • TMSS-2872
  • defer-state
  • add-custom-monitoring-points
  • TMSS-3101-Front-End-Only
  • TMSS-984-choices
  • SDC-1400-Front-End-Only
  • TMSS-3079-PII
  • TMSS-2936
  • check-for-max-244-subbands
  • TMSS-2927---Front-End-Only-PXII
  • Before-Remove-TMSS
  • LOFAR-Release-4_4_318 protected
  • LOFAR-Release-4_4_317 protected
  • LOFAR-Release-4_4_316 protected
  • LOFAR-Release-4_4_315 protected
  • LOFAR-Release-4_4_314 protected
  • LOFAR-Release-4_4_313 protected
  • LOFAR-Release-4_4_312 protected
  • LOFAR-Release-4_4_311 protected
  • LOFAR-Release-4_4_310 protected
  • LOFAR-Release-4_4_309 protected
  • LOFAR-Release-4_4_308 protected
  • LOFAR-Release-4_4_307 protected
  • LOFAR-Release-4_4_306 protected
  • LOFAR-Release-4_4_304 protected
  • LOFAR-Release-4_4_303 protected
  • LOFAR-Release-4_4_302 protected
  • LOFAR-Release-4_4_301 protected
  • LOFAR-Release-4_4_300 protected
  • LOFAR-Release-4_4_299 protected
41 results

config.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    rd_unb2c.py 6.48 KiB
    #******************************************#
    # Read hardware info from UNB2c
    # Created: 2021-05-10
    #******************************************#
    
    import sys
    import time
    sys.path.insert(0,'.')
    import os
    if os.name =="posix":
        from I2C_serial_pi import *
    else:
        from I2C_serial import *
    
    from UniBoard2_I2C import *
    I2CBUSNR=3
    
    
    def rw_eeprom(value=0xAB):
        I2C_eeprom = I2C(EEPROM)
        I2C_eeprom.bus = I2CBUSNR
        ret_ack, ret_value = I2C_eeprom.read_bytes(0)
        if ret_ack < 1:
            print("no device found")
        else:
            pr_stri = "Found device at address 0x{:02x}".format(I2C_eeprom.I2C_Address)
            print(pr_stri)
            I2C_eeprom.write_bytes(0x00, value)
            ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1)
            stri = "Wrote to EEPROM: 0x{0:X}, Read from EEPROM: 0x{1} ".format(value, ret_value)
            print(stri)
    
    def front_led(collor):
        main_switch = I2C(MAIN_I2C_SWITCH)
        main_switch.bus = I2CBUSNR
        ret_ack = main_switch.write_bytes(0x20,0x20) #select LED
        if ret_ack < 1:
            print("Main I2C switch not found")
        else:
            front = I2C(LED_DRIVER)
            front.bus = I2CBUSNR
            ret_ack = front.write_bytes(0x03, 0)
            if ret_ack < 1:
                print("Front LED driver not found")
            else:
                front.write_bytes(0x01, collor)
                sleep(1.5)
    
    def read_pol(node_nr, i2c_addr):
        if node_nr >= 0:
            main_switch = I2C(MAIN_I2C_SWITCH)
            main_switch.bus = I2CBUSNR
            ret_ack = main_switch.write_bytes(0x0, 0x01<<node_nr) #select Node
            if ret_ack < 1:
                print("Main I2C switch not found")
                return False
            else:
                node_switch = I2C(NODE_I2C_SWITCH)
                node_switch.bus = I2CBUSNR
                ret_ack = node_switch.write_bytes(0x0, 0x20) #select DDR4
                if ret_ack < 1:
                    print("Node I2C switch not found")
                    return False
        else:
            print("Central POL")
            main_switch = I2C(MAIN_I2C_SWITCH)
            main_switch.bus = I2CBUSNR
            ret_ack = main_switch.write_bytes(0x0, 0x10) #select Pol
            if ret_ack < 1:
                print("Main I2C switch not found")
                return False
        LOC_PWR = I2C(i2c_addr)
        LOC_PWR.bus = I2CBUSNR
        ret_ack, ret_value = LOC_PWR.read_bytes(0)
        if ret_ack < 1:
            print("no device found")
        else:
            ret_ack, vout_mod = LOC_PWR.read_bytes(LP_VOUT_MODE, 1)
            ret_ack, raw_value = LOC_PWR.read_bytes(LP_VOUT, 2)
            vout_mod = int(vout_mod,16)
            ret_value = []
            ret_value.append(int(raw_value[:2], 16))
            ret_value.append(int(raw_value[2:], 16))
            vout = calc_lin_3bytes(ret_value, [vout_mod])
    	stri = "Output voltage :{0: <5.2f} V ".format(vout)
            ret_ack, raw_value = LOC_PWR.read_bytes(LP_IOUT, 2)
            ret_value=[]
            ret_value.append(int(raw_value[:2],16))
            ret_value.append(int(raw_value[2:],16))
            iout = calc_lin_2bytes(ret_value)
            stri += "Output Current :{0: <5.2f} A ".format(iout)
            ret_ack,raw_value = LOC_PWR.read_bytes(LP_temp, 2)
            ret_value=[]
            ret_value.append(int(raw_value[:2],16))
            ret_value.append(int(raw_value[2:],16))
            temp = calc_lin_2bytes(ret_value)
            stri += "temperature :{0: <5.2f} Deg C".format(temp)
            print(stri)
        return True
     
    def read_ddr(node_nr = 0, module=0):
        main_switch = I2C(MAIN_I2C_SWITCH)
        main_switch.bus = I2CBUSNR
        ret_ack = main_switch.write_bytes(0x0, 0x01<<node_nr) #select Node
        if ret_ack < 1:
            print("Main I2C switch not found")
        else:
            node_switch = I2C(NODE_I2C_SWITCH)
            node_switch.bus = I2CBUSNR
            ret_ack = node_switch.write_bytes(0x0, 0x10) #select DDR4
            if ret_ack < 1:
                print("Node I2C switch not found")
            else:
                if module==0:
                    ddr_module = I2C(MB_I_TEMP_I2C_ADDR)
                else:
                    ddr_module = I2C(MB_II_TEMP_I2C_ADDR)
                ddr_module.bus = I2CBUSNR
                ret_ack, raw_ret = ddr_module.read_bytes(MB_TEMP_REG, 2)
                if ret_ack < 1:
                    stri = "No DDR moduel in slot {0} node  {1}".format(module, node_nr)
                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
                    stri = "Temperature DDR4 in slot {0} node  {1} is {2:3.2f} C".format(module, node_nr, temp)
                print(stri)
    
    def read_qsfp(node_nr = 0, module=0):
        main_switch = I2C(MAIN_I2C_SWITCH)
        main_switch.bus = I2CBUSNR
        ret_ack = main_switch.write_bytes(0x00, 0x01<<node_nr) #select Node
        if ret_ack < 1:
            print("Main I2C switch not found")
        else:
            node_switch = I2C(NODE_I2C_SWITCH)
            node_switch.bus = I2CBUSNR
            ret_ack = node_switch.write_bytes(0x0, QSFP_PORT[module]) #select QSFP cage 1
            if ret_ack < 1:
                print("Node I2C switch not found")
            else:
                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[: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[: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[: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)
    
    if 1:
        rw_eeprom(0xCD)
        for color in list(LED_COLORS.keys()):
            print(color)
            front_led(LED_COLORS[color])
        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)
    #else:
        for node_cnt in range(4):
            read_pol(node_cnt, LOC_POWER_CORE)
        read_pol(-1,0x01)