Android蓝牙OBEX规范
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●
●
Source code: android_server_BluetoothDeviceService.cpp /* Compose the command */ msg = dbus_message_new_method_call(BLUEZ_DBUS_BASE_IFC, nat>adapter, DBUS_CLASS_NAME, "DiscoverDevices"); /* Send the command. */ reply = dbus_connection_send_with_reply_and_block(nat>conn, msg, 1, &err);
●
●
●
●
●
●
OBEX (Object EXchange)
●
a communications protocol that facilitates the exchange of binary objects between devices. in the protocol stack, OBEX is bound to RFCOMM
●
openobex + obexpushd Run an OBEX data server in Android > obexpushd listen RFCOMM connections File permission
●
●
●
●
Send files via BT in Android
●
Openobex + obexftp Connect to a RFCOMM connection > obex_test b BTADDR CHANNEL > obexftp b BTADDR B CHANNEL list
ddms: dalvik debug monitor II.
Bluetooth headset
Music player + Dialer
Connect with other BT devices
●
Bluez: hcid daemon dbus-daemon: connections between hcid and system server D-Bus is a simple inter-process communication (IPC) system for software applications to communicate with one another. dbus-daemon is the D-Bus message bus daemon. D-Bus is first a library that provides one-to-one communication between any two applications; dbus-daemon is an application that uses this library to implement a message bus daemon. Multiple programs connect to the message bus daemon and can exchange messages with one another. debug utility: d-feet, dbus-monitor, dbus-send
/mydroid/externel/bluez /mydroid/kernel/drivers/bluetooth /mydroid/kernel/net/bluetooth
●
Android app framework (java & c++)
/mydroid/frameworks/base/core/jni/android_bluetooth_*.cpp /mydroid/frameworks/base/core/java/android/bluetooth/*.java /mydroid/frameworks/base/services/java/com/android/server/ (SystemServer)
●
/root/init.trout.rc service hciattach (disabled)
●
system server decice BT power On or Off from settings value start related services
ddms: dalvik debug monitor I.
●
●
●
●
●
wk.baidu.com
Android architecture
The diagram above offers a library-oriented view of the Bluetooth stack.
Related source code
●
Bluez 3.36 (user space and kernel)
●
●
●
●
BlueZ DBus Architecture
DFeet: DBus viewer and debugger
Dbussend: send a message to a message bus
Scan nearby BT devices in Android
●
●
●
●
Send AT commands via bluetooth
●
Connect with Nokia N73 phone > sdptool browse 00:18:C5:42:18:78 > sudo rfcomm connect 0 00:18:C5:42:18:78 2 minicom > AT > AT+CGMR > AT+CGMI
Android Bluetooth Introduction
Erin Yueh 2009/06/26
Agenda
●
Android Bluetooth architecture Related source code Init Bluetooth Connect with other BT devices (dbus) RFCOMM OBEX (socket)
●
Android UI application
/mydroid/packages/apps/Phone/src/com/android/phone/ (Phone App) /mydroid/packages/apps/Settings/src/com/android/settings/bluetooth/ (Settings App)
●
●
●
Thank You!
●
Bluez utility: hcitool scan DiscoverDevices: bluez/util/hcid/dbusapi.txt This method starts the device discovery procedure. This includes an inquiry procedure and remote device name resolving. On start up this process will generate a DiscoveryStarted signal and then return DeviceFound singals. If the procedure has been finished an DiscoveryCompleted signal will be sent.
Init Bluetooth
●
/root/init.rc mkdir /data/misc/hcid (store device info) service dbus /system/bin/dbusdaemon service hcid /system/bin/hcid (disabled) service hfag /system/bin/sdptool add channel=10 HFAG (handsfree, disabled, one shot) service hsag /system/bin/sdptool add channel=11 HSAG (headset, disabled, one shot)
Signals
How to pair with a BT device? I. Register Passkey Agent
II. Request PIN code
RFCOMM (Radio Frequency Communication)
●
The Bluetooth protocol RFCOMM is a simple set of transport protocols. RFCOMM is sometimes called Serial Port Emulation. The Bluetooth Serial Port Profile is based on this protocol. In the protocol stack, RFCOMM is bound to L2CAP RFCOMM provides a simple reliable data stream to the user, similar to TCP. It is used directly by many telephony related profiles as a carrier for AT commands
●
SOCKET
●
UNIX socket (AF_BLUETOOTH) interprocess communication like Internet socket clientserver
recv() send()
●
●
●
Receive files via BT in Android