打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
安卓4.1: bluetooth之power on流程

Bluetooth服务(以及蓝牙的A2DP服务)都是通过SystemServer启动(frameworks/base/services/java/com/android/server/SystemServer.java)

  1. Frameworks层(frameworks/base/core/java/android/server/BluetoothService.java, function: enable())
  2.              |
  3.              | 给蓝牙状态机一个USER_TURN_ON的命令
  4.              |
  5. jni层(frameworks/base/core/jni/android_server_BluetoothService.cpp, function: enableNative())
  6.              |
  7. HAL层(system/bluetooth/bluedroid/bluetooth.c, function: set_bluetooth_power())
  8.              |
  9.              | write to rfkill
  10.              |
  11. kernel层(net/rfkill/rfkill-gpio.c,或者vendor定制的rfkill driver, function: rfkill_gpio_set_power())
rfkill_id在init.rc和bluetooth.c中已经把bluetooth写定为0,即:/sys/class/rfkill/rfkill0/state。匹配的机制是:
  1.   /sys/class/rfkill/rfkill%d/type
  2.   读取内容,与bluetooth比较,如果相同,则返回id,并且给
  3.   /sys/class/rfkill/rfkill%d/state写值(1或者0)以便开关电
这部分具体实现可以参看rfkill的driver代码
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android平台开发-Bluez function porting-蓝牙功能移植
Android4.2蓝牙Enable完全分析
android电源管理
Android震动系统结构 移植与调试的要点
Android Factory Reset flow
Android 4.0中按键的处理流程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服