blob: 2c9a4dd8843b0f24f72c36eaa26f1885884bd66b [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import logging, os
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
LIGHT_SENSOR_LOCATIONS = [ "/sys/bus/iio/devices/iio:device0/",
"/sys/bus/iio/devices/device0/"
]
LIGHT_SENSOR_FILES = [ "in_illuminance0_input",
"in_illuminance0_raw",
"illuminance0_input"
]
class hardware_LightSensor(test.test):
"""
Test the system's Light Sensor device.
Failure to find the device likely indicates the kernel module is not loaded.
Or it could mean the I2C probe for the device failed because of an incorrect
I2C address or bus specification.
The ebuild scripts should properly load the udev rules for light sensor so
we can find its files in LIGHT_SENSOR_LOCATIONS depending
on the kernel version.
"""
version = 1
def run_once(self):
found_light_sensor = 0
for location in LIGHT_SENSOR_LOCATIONS:
for file in LIGHT_SENSOR_FILES:
path = location + file
if os.path.exists(path):
found_light_sensor = 1
break
else:
logging.info("Did not find light sensor reading at " + path)
if found_light_sensor:
break
if not found_light_sensor:
raise error.TestFail("No light sensor reading found.")
else:
logging.info("Found light sensor at " + path)
str = utils.read_one_line(path)
reading = int(str)
if reading < 0:
raise error.TestFail("Invalid light sensor reading (%s)" % str)
logging.debug("light sensor reading is %d", reading);