Android O新增的关于usb的三个属性 sys.usb.configfs,sys.usb.ffs.ready,sys.usb.ffs.mtp.ready

1.sys.usb.configfs
该属性默认为0,通过判断kernel是否支持configfs,即判断/config/usb_gadget存在设置为1.代码在init.qcom.usb.sh中(高通平台下)。
2.sys.usb.ffs.ready
当sys.usb.config设置为none时,设置sys.usb.ffs.ready为0.
每次设置的属性有adb时,会先start adbd。
如sys.usb.config=mtp,adb时,在init.usb.configfs.rc中有如下代码:

sys.usb.config=mtp,adb && sys.usb.configfs=1
start adbd

然后在system/core/adb/daemon/main.cpp中,会调用usb_init,进而调用system/core/adb/daemon/usb.cpp的usb_ffs_open_thread()函数中,然后调用init_functionfs()初始化该属性为1.只有sys.usb.ffs.ready=1时,才能开启adb端口。

3. sys.usb.ffs.mtp.ready
当设置为none时,设置sys.usb.ffs.mtp.ready为0.
android O新增,当功能为mtp或者ptp时,在 trySetEnableFuntction()函数中会先发送一次广播给mtpReceiver,
1) 给数据库添加mtp_connected;
2) 调用mtpServer.configure(),最后调用mtpServer.cpp设置sys.usb.ffs.mtp.ready属性为1,才能响应on property:sys.usb.config=mtp(ptp也是).
然后收到kernel发送的uevent后,再发一次广播。


你可能感兴趣的:(Android驱动,USB,Android框架)