from test.helpers.syscmd import SysCommand import unittest class Qi2c(unittest.TestCase): params = None def __init__(self, testname, testfunc, varlist): self.params = varlist super(Qi2c, self).__init__(testfunc) if "busnum" in varlist: self.__busnum = varlist["busnum"] else: raise Exception('busnum param inside Qi2c must be defined') if "register" in varlist: self.__register = varlist["register"].split("/") else: raise Exception('register param inside Qi2c must be defined') self.__devices=[] self._testMethodDoc = testname def execute(self): str_cmd = "i2cdetect -a -y -r {}".format(self.__busnum) i2c_command = SysCommand("i2cdetect", str_cmd) if i2c_command.execute() == 0: self.__raw_out = i2c_command.getOutput() if self.__raw_out == "": return -1 lines=self.__raw_out.decode('ascii').splitlines() for i in range(len(lines)): if lines[i].count('UU'): if lines[i].find("UU"): self.__devices.append("0x{}{}".format((i - 1), hex(int((lines[i].find("UU") - 4) / 3)).split('x')[-1])) for i in range(len(self.__register)): if not(self.__register[i] in self.__devices): self.fail("failed: device {} not found in bus i2c-{}".format(self.__register[i], self.__busnum)) else: self.fail("failed: could not complete i2cdedtect command")