Merge changes from topic "webcam-shusky" into udc-qpr-dev
* changes: usb gadget: Add config for UVC in init UsbGadget: Add support for UVC function
This commit is contained in:
commit
969c01c3f2
2 changed files with 186 additions and 0 deletions
|
@ -71,6 +71,72 @@ on early-boot
|
||||||
# acm function for uwb
|
# acm function for uwb
|
||||||
mkdir /config/usb_gadget/g1/functions/acm.uwb0
|
mkdir /config/usb_gadget/g1/functions/acm.uwb0
|
||||||
|
|
||||||
|
# uvc function
|
||||||
|
mkdir /config/usb_gadget/g1/functions/uvc.0
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/function_name "Android Webcam"
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket 3072
|
||||||
|
# write /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst 5
|
||||||
|
# write /config/usb_gadget/g1/functions/uvc.0/streaming_interval 2
|
||||||
|
# setup control params
|
||||||
|
mkdir /config/usb_gadget/g1/functions/uvc.0/control/header/h
|
||||||
|
symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/fs/h
|
||||||
|
symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/ss/h
|
||||||
|
# advertise mjpeg streams
|
||||||
|
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m
|
||||||
|
# advertise 720p resolution for webcam encoded as mjpeg
|
||||||
|
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight 720
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth 1280
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize 1843200
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval 333333
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval "166666
|
||||||
|
333333
|
||||||
|
416666
|
||||||
|
666666"
|
||||||
|
# advertise 1080p resolution for webcam encoded as mjpeg
|
||||||
|
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight 1080
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth 1920
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize 4147200
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwDefaultFrameInterval 333333
|
||||||
|
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval "166666
|
||||||
|
333333
|
||||||
|
416666
|
||||||
|
666666"
|
||||||
|
# TODO: Add uncompressed streams
|
||||||
|
# setup streaming params
|
||||||
|
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
|
||||||
|
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/m
|
||||||
|
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs/h
|
||||||
|
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs/h
|
||||||
|
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss/h
|
||||||
|
# remove write permissions for 'others'
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwDefaultFrameInterval
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxBitRate
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMinBitRate
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/bmCapabilities
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxBitRate
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMinBitRate
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/bmCapabilities
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bDefaultFrameIndex
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bSourceID
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/control/header/h/dwClockFrequency
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/control/header/h/bcdUVC
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/function_name
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket
|
||||||
|
chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming_interval
|
||||||
|
|
||||||
# chown file/folder permission
|
# chown file/folder permission
|
||||||
chown system system /config/usb_gadget/
|
chown system system /config/usb_gadget/
|
||||||
chown system system /config/usb_gadget/g1
|
chown system system /config/usb_gadget/g1
|
||||||
|
@ -135,6 +201,99 @@ on early-boot
|
||||||
chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol
|
chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol
|
||||||
chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult
|
chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult
|
||||||
chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass
|
chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/bInterfaceNumber
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/class
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/fs
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/fs/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/ss
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/ss/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/header
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/header/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/header/h/bcdUVC
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/header/h/dwClockFrequency
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/bmControls
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/bSourceID
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/bUnitID
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/iProcessing
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/wMaxMultiplier
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/bAssocTerminal
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/bmControls
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/bTerminalID
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/iTerminal
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wObjectiveFocalLengthMax
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wObjectiveFocalLengthMin
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wOcularFocalLength
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wTerminalType
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bAssocTerminal
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bSourceID
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bTerminalID
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/iTerminal
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/wTerminalType
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/function_name
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming_interval
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/bInterfaceNumber
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default/bColorPrimaries
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default/bMatrixCoefficients
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default/bTransferCharacteristics
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bmInfo
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bStillCaptureMethod
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bTerminalLink
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bTriggerSupport
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bTriggerUsage
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/m
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/bFrameIndex
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/bmCapabilities
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwDefaultFrameInterval
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxBitRate
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMinBitRate
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/bFrameIndex
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/bmCapabilities
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxBitRate
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMinBitRate
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bAspectRatioX
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bAspectRatioY
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bDefaultFrameIndex
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bFormatIndex
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmFlags
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmInterlaceFlags
|
||||||
|
chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed
|
||||||
chown system system /config/usb_gadget/g1/idProduct
|
chown system system /config/usb_gadget/g1/idProduct
|
||||||
chown system system /config/usb_gadget/g1/idVendor
|
chown system system /config/usb_gadget/g1/idVendor
|
||||||
chown system system /config/usb_gadget/g1/max_speed
|
chown system system /config/usb_gadget/g1/max_speed
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <android-base/properties.h>
|
||||||
|
|
||||||
#include <aidl/android/frameworks/stats/IStats.h>
|
#include <aidl/android/frameworks/stats/IStats.h>
|
||||||
|
|
||||||
namespace aidl {
|
namespace aidl {
|
||||||
|
@ -34,6 +36,9 @@ namespace hardware {
|
||||||
namespace usb {
|
namespace usb {
|
||||||
namespace gadget {
|
namespace gadget {
|
||||||
|
|
||||||
|
using ::android::base::GetBoolProperty;
|
||||||
|
using ::android::hardware::google::pixel::usb::kUvcEnabled;
|
||||||
|
|
||||||
string enabledPath;
|
string enabledPath;
|
||||||
constexpr char kHsi2cPath[] = "/sys/devices/platform/10cb0000.hsi2c";
|
constexpr char kHsi2cPath[] = "/sys/devices/platform/10cb0000.hsi2c";
|
||||||
constexpr char kI2CPath[] = "/sys/devices/platform/10cb0000.hsi2c/i2c-";
|
constexpr char kI2CPath[] = "/sys/devices/platform/10cb0000.hsi2c/i2c-";
|
||||||
|
@ -302,6 +307,28 @@ static Status validateAndSetVidPid(uint64_t functions) {
|
||||||
ret = Status(setVidPid("0x18d1", "0x4eec"));
|
ret = Status(setVidPid("0x18d1", "0x4eec"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case GadgetFunction::UVC:
|
||||||
|
if (!(vendorFunctions == "user" || vendorFunctions == "")) {
|
||||||
|
ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
|
||||||
|
ret = Status::CONFIGURATION_NOT_SUPPORTED;
|
||||||
|
} else if (!GetBoolProperty(kUvcEnabled, false)) {
|
||||||
|
ALOGE("UVC function not enabled by config");
|
||||||
|
ret = Status::CONFIGURATION_NOT_SUPPORTED;
|
||||||
|
} else {
|
||||||
|
ret = Status(setVidPid("0x18d1", "0x4eed"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GadgetFunction::ADB | GadgetFunction::UVC:
|
||||||
|
if (!(vendorFunctions == "user" || vendorFunctions == "")) {
|
||||||
|
ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
|
||||||
|
ret = Status::CONFIGURATION_NOT_SUPPORTED;
|
||||||
|
} else if (!GetBoolProperty(kUvcEnabled, false)) {
|
||||||
|
ALOGE("UVC function not enabled by config");
|
||||||
|
ret = Status::CONFIGURATION_NOT_SUPPORTED;
|
||||||
|
} else {
|
||||||
|
ret = Status(setVidPid("0x18d1", "0x4eee"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ALOGE("Combination not supported");
|
ALOGE("Combination not supported");
|
||||||
ret = Status::CONFIGURATION_NOT_SUPPORTED;
|
ret = Status::CONFIGURATION_NOT_SUPPORTED;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue