[RK3399][Android7.1] USB连接模式设置流程小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kris_fei/article/details/87859150

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

开发者选项中选择USB连接模式:

  onPreferenceChange -> DevelopmentSettings.java 点击后响应
	writeUsbConfigurationOption ->
	  manager.setCurrentFunction ->
		setCurrentFunction -> UsbManager.java
		  mService.setCurrentFunction ->
			setCurrentFunction -> UsbService.java
			  mDeviceManager.setCurrentFunctions ->
				setCurrentFunctions -> UsbDeviceManager.java
				   mHandler.sendMessage -> //MSG_SET_CURRENT_FUNCTIONS
					 handleMessage ->
					   setEnabledFunctions ->
						 trySetEnabledFunctions ->
						   setUsbConfig -> 
						     SystemProperties.set ->  //设置属性USB_CONFIG_PROPERTY,即sys.usb.config

插上USB到PC,使用默认模式,默认模式在开机完成时设置:

handleMessage -> UsbDeviceManager.java //MSG_BOOT_COMPLETED
  trySetEnabledFunctions -> //参数是getDefaultFunctions(),设置和前面流程一样,这里不赘述。
    getDefaultFunctions ->
      SystemProperties.get //读取USB_PERSISTENT_CONFIG_PROPERTY,即persist.sys.usb.config

persist.sys.usb.config在build.prop中配置,当前配置的是mtp,adb
不过由于系统有bug,Google将mtp默认给去掉了,详见文章
[RK3399][Android7.1] 调试笔记 — USB连接后默认是充电模式

上层对usb插拔事件的响应:

onUEvent -> UsbDeviceManager.java //usb模块注册了监听类UEventObserver,收取底层发上来的uevent时间。
  mHandler.updateState -> 
    sendMessageDelayed -> //MSG_UPDATE_STATE
      handleMessage -> 
        updateUsbNotification
        updateAdbNotification
        updateCurrentAccessory

参考:

Android USB相關流程解析(android4.4)

猜你喜欢

转载自blog.csdn.net/kris_fei/article/details/87859150