Home | History | Annotate | Download | only in hardware_I2CProbe
      1 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 
      6 # DESCRIPTION :
      7 #
      8 # This is a hardware test for Probing I2C device. The test uses i2cdetect
      9 # utility to check if there's an device on specific bus.
     10 
     11 
     12 import re
     13 import logging
     14 
     15 from autotest_lib.client.bin import test, utils
     16 from autotest_lib.client.common_lib import error
     17 
     18 
     19 def i2c_detect(bus, addr):
     20     full_cmd = 'i2cdetect -y %d 0x%x 0x%x' % (bus, addr, addr)
     21     result = utils.system_output(full_cmd)
     22     logging.debug('Command: %s', full_cmd)
     23     logging.debug('Result: %s', result)
     24     return result
     25 
     26 def i2c_probe(bus, addr):
     27     response = i2c_detect(bus, addr)
     28     return (re.search('^\d\d:\s+(UU|[0-9a-f]{2})', response, re.MULTILINE) is
     29             not None)
     30 
     31 class hardware_I2CProbe(test.test):
     32     version = 1
     33 
     34     def run_once(self, bus, addr):
     35         if not i2c_probe(bus, addr):
     36             raise error.TestError('No I2C device on bus %d addr 0x%x' %
     37                     (bus, addr))
     38