xref: /aosp_15_r20/external/autotest/client/cros/camera/camera_utils.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Liimport glob, os
6*9c5db199SXin Lifrom autotest_lib.client.cros.video import device_capability
7*9c5db199SXin Li
8*9c5db199SXin Lidef find_cameras():
9*9c5db199SXin Li    """
10*9c5db199SXin Li    Find V4L camera devices
11*9c5db199SXin Li
12*9c5db199SXin Li    @return [device list]. If no camera is found, returns empty list.
13*9c5db199SXin Li    """
14*9c5db199SXin Li    cameras = [os.path.basename(camera) for camera in
15*9c5db199SXin Li               glob.glob('/sys/bus/usb/drivers/uvcvideo/*/video4linux/video*')]
16*9c5db199SXin Li    if not cameras:
17*9c5db199SXin Li        return []
18*9c5db199SXin Li    return cameras
19*9c5db199SXin Li
20*9c5db199SXin Li
21*9c5db199SXin Lidef has_builtin_usb_camera():
22*9c5db199SXin Li    """Check if there is a built-in USB camera by capability."""
23*9c5db199SXin Li    return device_capability.DeviceCapability().have_capability('builtin_usb_camera')
24*9c5db199SXin Li
25*9c5db199SXin Li
26*9c5db199SXin Lidef has_builtin_or_vivid_camera():
27*9c5db199SXin Li    """Check if there is a built-in USB camera or MIPI camera by capability."""
28*9c5db199SXin Li    return device_capability.DeviceCapability().have_capability(
29*9c5db199SXin Li            'builtin_or_vivid_camera')
30*9c5db199SXin Li
31*9c5db199SXin Li
32*9c5db199SXin Lidef get_camera_hal_paths():
33*9c5db199SXin Li    """Return the paths of all camera HALs on device."""
34*9c5db199SXin Li    return glob.glob('/usr/lib*/camera_hal/*.so')
35*9c5db199SXin Li
36*9c5db199SXin Li
37*9c5db199SXin Lidef get_camera_hal_paths_for_test():
38*9c5db199SXin Li    """Return the paths of all camera HALs on device for test."""
39*9c5db199SXin Li    paths = []
40*9c5db199SXin Li    for path in get_camera_hal_paths():
41*9c5db199SXin Li        name = os.path.basename(path)
42*9c5db199SXin Li        # usb.so might be there for external cameras, skip it if there is no
43*9c5db199SXin Li        # built-in USB camera.
44*9c5db199SXin Li        if name == 'usb.so' and not has_builtin_usb_camera():
45*9c5db199SXin Li            continue
46*9c5db199SXin Li        paths.append(path)
47*9c5db199SXin Li    return paths
48