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