summaryrefslogtreecommitdiff
path: root/test-cli/test/tests/qi2c.py
blob: 409005ced94fd8aedde632a3fdd708825ee887d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from test.helpers.syscmd import SysCommand
import unittest

class Qi2c(unittest.TestCase):

    def __init__(self, testname, testfunc, busnum, register):
        super(Qi2c, self).__init__(testfunc)
        self.__busnum = busnum
        self.__register = register.split("/")
        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")