原文地址http://blog.chinaunix.net/uid-24605155-id-191627.html
USB mass storage porting
一、基本检测原理
当usb插入时kenel会通过NETLINK机制向vold发消息。vold会调用NetlinkHandler:onEvent()进行处
理。这些event分block,switch,battery,power_supply,其中block指的是usb/sdcard这一类
usbmassstorage; switch指的是headset,usb wire这类设备。
这时会调到VolumeManager::handleBlockEvent()处理.
这时会调到VolumeManager::handleBlockEvent()处理.
二、流程分析
USB mass storage也是通过Vold来连接到PC的。
Vold会读取/sys/devices/virtual/switch/usb_mass_storage/state的状态,这个状态是online或
Vold会读取/sys/devices/virtual/switch/usb_mass_storage/state的状态,这个状态是online或
offline。
根据状态的不同调用vm->notifymsConnected()发送信息到socket;
然后MountService和VolumeManager会处理相关信息。
如果处理成功,会连接/sys/devices/platform/fsl-usb2-udc/gadget/lun0/file到PC。
然后MountService和VolumeManager会处理相关信息。
如果处理成功,会连接/sys/devices/platform/fsl-usb2-udc/gadget/lun0/file到PC。