当前位置: 凤凰彩票登陆 > 凤凰新闻下载 > 正文

编造现实,使能notifyBluetooth低功耗设备

时间:2019-09-22 08:51来源:凤凰新闻下载
星期三, 05. 九月 2018 02:03上午 - beautifulzzzz Daydream android.bluttooth 1、前言 上一篇讲了如何编译安装BlueZ-5,本篇主要在于玩BlueZ,用命令行去操作BLE设备: [BlueZ] 1、Download install and use the

星期三, 05. 九月 2018 02:03上午 - beautifulzzzz

Daydream

凤凰新闻下载 1

android.bluttooth

1、前言

上一篇讲了如何编译安装BlueZ-5,本篇主要在于玩BlueZ,用命令行去操作BLE设备:

  • [BlueZ] 1、Download install and use the BlueZ and hcitool on PI 3B+

凤凰新闻下载 2

Virtual Reality High Performance

提供管理蓝牙功能的类,比如对设备的扫描,连接设备,和管理设备之间的传输数据。蓝牙API支持经典蓝牙和低功耗蓝牙。

2、gatttool —— 老工具趟坑

刚开始跟着 Get Started with Bluetooth Low Energy on Linux 操作gatttool,发现坑太多(主要原因是工具老了):

采用sudo gatttool -b 4D:69:98:0E:91:5E -I去连接
发现会报错:Error: connect error: Connection refused (111)
最终参考LINK-11发现需要加random选项([#1](https://stackoverflow.com/questions/32947807/cannot-connect-to-ble-device-on-raspberry-pi))

➜  ~  sudo gatttool -b 4D:69:98:0E:91:5E -I
[4D:69:98:0E:91:5E][LE]> connect
Attempting to connect to 4D:69:98:0E:91:5E
Error: connect error: Connection refused (111)
[4D:69:98:0E:91:5E][LE]> exit
➜  ~  sudo gatttool  -t random  -b 4D:69:98:0E:91:5E -I
[4D:69:98:0E:91:5E][LE]> connect
Attempting to connect to 4D:69:98:0E:91:5E
Connection successful
[4D:69:98:0E:91:5E][LE]> 
(gatttool:3104): GLib-WARNING **: Invalid file descriptor.

过一回会10S自动断开,网上说这个工具老了,不建议用了([#2](https://www.spinics.net/lists/linux-bluetooth/msg67617.html)):

There are new tools to use with GATT, bluetoothctl/bluetoothd is the preferred since with that you have GAP, etc, 
but if want to use a stand alone tool then I suggest you use btgatt-client.

凤凰新闻下载 3

googlevr

Provides classes that manage Bluetooth functionality, such as scanning for devices, connecting with devices, and managing data transfer between devices. The Bluetooth API supports both "Classic Bluetooth" and Bluetooth Low Energy.

3、bluetoothctl——NB的新工具

命令行进入bluetoothctl操作环境([#6](https://mcuoneclipse.com/2016/12/19/tutorial-ble-pairing-the-raspberry-pi-3-model-b-with-hexiwear/))

bluetoothctl

我在手机上用lightblue模拟一个BLE设备ty_prod,之后对其service进行修改,调用scan on进行搜索还是老的,
最终发现要先用remove移除之前的设备,之后再scan就会出现[NEW] Device 72:3B:E1:81:4E:4F ty_prod设备
注: 用lightblue模拟的设备的MAC不是固定的
注: 我发现在lightblue中无论怎么模拟BLE设备,一旦被连上搜索到的service都是IPone的

[bluetooth]# devices
Device 28:ED:6A:A0:26:B7 ty_prod
Device 58:71:33:00:00:24 Bluetooth Keyboard
Device 00:1A:7D:DA:71:0A SHEN-PC
Device 94:87:E0:B3:AC:6F Mi Phone
[bluetooth]# remove 28:ED:6A:A0:26:B7 
...
[bluetooth]# scan on
Discovery started
[NEW] Device 72:3B:E1:81:4E:4F ty_prod
[bluetooth]# scan off
...
Discovery stopped
[bluetooth]# connect 72:3B:E1:81:4E:4F
Attempting to connect to 72:3B:E1:81:4E:4F
[CHG] Device 72:3B:E1:81:4E:4F Connected: yes
Connection successful
[ty_prod]

索性就用IPhone自带的服务做测试了~

[ty_prod]# info
Device 28:ED:6A:A0:26:B7 (public)
    Name: tuya_mdev_test
    Alias: tuya_mdev_test
    Appearance: 0x0040
    Icon: phone
    Paired: yes
    Trusted: no
    Blocked: no
    Connected: yes
    LegacyPairing: no
    UUID: Fax                       (00001111-0000-1000-8000-00805f9b34fb)
    UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
    UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
    UUID: Current Time Service      (00001805-0000-1000-8000-00805f9b34fb)
    UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
    UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
    UUID: Vendor specific           (7905f431-b5ce-4e99-a40f-4b1e122d00d0)
    UUID: Vendor specific           (89d3502b-0f36-433a-8ef4-c502ad55f8dc)
    UUID: Vendor specific           (9fa480e0-4967-4542-9390-d343dc5d04ae)
    UUID: Vendor specific           (d0611e78-bbb4-4591-a5f8-487910ae4366)
[CHG] Device 28:ED:6A:A0:26:B7 ServicesResolved: no
[CHG] Device 28:ED:6A:A0:26:B7 Connected: no

我们用Current Time Service,列出所有attributes操作如下:

[tuya_mdev_test]# menu gatt
[tuya_mdev_test]# list-attributes 28:ED:6A:A0:26:B7
...
Primary Service
    /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041
    00001805-0000-1000-8000-00805f9b34fb
    Current Time Service
Characteristic
    /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041/char0045
    00002a0f-0000-1000-8000-00805f9b34fb
    Local Time Information
Characteristic
    /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041/char0042
    00002a2b-0000-1000-8000-00805f9b34fb
    Current Time
Descriptor
    /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041/char0042/desc0044
    00002902-0000-1000-8000-00805f9b34fb
    Client Characteristic Configuration
...

上面Current Time Service对应的服务如下图:

凤凰新闻下载 4

我们选择Current Time进行操作UUID:0x2A2B

[ty_prod]# select-attribute /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041/char0042
[tuya_mdev_test:/service0041/char0042]# read
Attempting to read /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041/char0042
[CHG] Attribute /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041/char0042 Value:
  e2 07 09 05 01 24 11 03 f1 02                    .....$....      
  e2 07 09 05 01 24 11 03 f1 02                    .....$.... 
[tuya_mdev_test:/service0041/char0042]# attribute-info
Characteristic - Current Time
    UUID: 00002a2b-0000-1000-8000-00805f9b34fb
    Service: /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0041
    Value:
  e2 07 09 05 01 2e 01 03 f5 02                    ..........      
    Notifying: yes
    Flags: read
    Flags: notify

读出结果大致意思应该是:2018-9/5-1:36:17 周三

读取一下0x180A的Device Information:

[tuya_mdev_test:/service0006/char0007]# select-attribute /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0047/char004a
[tuya_mdev_test:/service0047/char004a]# attribute-info
Characteristic - Model Number String
    UUID: 00002a24-0000-1000-8000-00805f9b34fb
    Service: /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0047
    Flags: read
[tuya_mdev_test:/service0047/char004a]# read
Attempting to read /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0047/char004a
[CHG] Attribute /org/bluez/hci0/dev_47_B1_26_C1_81_18/service0047/char004a Value:
  69 50 68 6f 6e 65 36 2c 32                       iPhone6,2       
  69 50 68 6f 6e 65 36 2c 32                       iPhone6,2    

当然写、使能notify也很简单,看help即可。最后断开连接、并退出!!!

[tuya_mdev_test:/service0047/char004a]# disconnect 28:ED:6A:A0:26:B7
Attempting to disconnect from 28:ED:6A:A0:26:B7
[CHG] Device 28:ED:6A:A0:26:B7 ServicesResolved: no
Successful disconnected
[CHG] Device 28:ED:6A:A0:26:B7 Connected: no
[bluetooth]# quit

凤凰新闻下载 5

Google VR for Android

有关很多其它的经典蓝牙信息。能够看Bluetooth指南。有关很多其它的低功耗蓝牙的信息,能够看BLE指南。

LINKS

[1].Cannot connect to BLE device on Raspberry Pi
[2].Invalid file descriptor gatttool of bluez 5.32
[3].Get Started with Bluetooth Low Energy on Linux
[4].Reverse Engineering a Bluetooth Low Energy Light Bulb
[5].Doing Bluetooth Low Energy on Linux
[6].Tutorial: BLE Pairing the Raspberry Pi 3 Model B with Hexiwear

凤凰新闻下载 6

@beautifulzzzz
智能硬件、物联网,热爱技术,关注产品
博客:http://blog.beautifulzzzz.com
园友交流群:414948975

GVR SDK and NDK Release Notes

For more information about Classic Bluetooth, see the Bluetooth guide. For more information about Bluetooth Low Energy, see the Bluetooth Low Energy (BLE) guide.

http://www.apkmirror.com/apk/google-inc

Bluetooth APIs 能够使得应用具备下面功能:

com.google.vr.vrcore

1.对于其它的蓝牙设备的扫描(包含BLE设备)

com.google.android.vr.home

2.为配对的蓝牙设备查询本地蓝牙适配器

Google Inc. Daydream (Daydream)

3.建立RFCOMM channels/sockets.

Google Inc. Google VR Services (Daydream)

4.连接在其他设备上指定的sockets

What is Google Daydream

5.与其他设备之间数据传输

Daydream Performance HUD

6.与BLE设备交流。比如接近传感器,心率监视器,健身设备,等等

Daydream Controller手柄数据的解析

7.作为GATTclient或GATT服务端

How do I fix my Daydream controller

使用这些APIs来完毕蓝牙之间的交流,一个应用程序必须声明BLUETOOTH权限。对于一些额外的功能。如请求设备发现,也须要BLUETOOTH_ADMIN权限。

Google Daydream Controller Teardown

提示:不是全部的Android设备都提供了Bluetooth功能。

Daydream controller : Comprehensive guide

The Bluetooth APIs let applications:

Use the Daydream View controller and headset

  • Scan for other Bluetooth devices (including BLE devices).
  • Query the local Bluetooth adapter for paired Bluetooth devices.
  • Establish RFCOMM channels/sockets.
  • Connect to specified sockets on other devices.
  • Transfer data to and from other devices.
  • Communicate with BLE devices, such as proximity sensors, heart rate monitors, fitness devices, and so on.
  • Act as a GATT client or a GATT server (BLE).

谷歌Daydream VR平台应用需求:如何设计VR应用

To perform Bluetooth communication using these APIs, an application must declare the BLUETOOTH permission. Some additional functionality, such as requesting device discovery, also requires the BLUETOOTH_ADMIN permission.

 

Note: Not all Android-powered devices provide Bluetooth functionality.

Algorithm

接口:

BluetoothAdapter.LeScanCallback :用来提供LE扫描结果的回调接口

BluetoothProfile:Bluetooth Profiles的公共APIs

BluetoothProfile.ServiceListener:BluetoothProfile IPC client与service的连接和断开时的一个通知接口

-

Conversion Quaternion to Euler

Interfaces


BluetoothAdapter.LeScanCallback Callback interface used to deliver LE scan results. 
BluetoothProfile Public APIs for the Bluetooth Profiles. 
BluetoothProfile.ServiceListener An interface for notifying BluetoothProfile IPC clients when they have been connected or disconnected to the service. 

Conversion Euler to Quaternion

类:

BluetoothA2dp:这个类提供控制Bluetooth A2DP profile的公共APIs

BluetoothAdapter:代表本地设备的Bluetooth adapter.
BluetoothAssignedNumbers:蓝牙分配号码

BluetoothClass:代表一个Bluetooth类。它描写叙述了设备的一般特征(characteristics)和能力(capabilities)

BluetoothClass.Device:定义全部设备类的常量

凤凰新闻下载,BluetoothClass.Device.Major:定义全部主要设备类的常量

BluetoothClass.Service:定义全部服务类的常量

BluetoothDevice:代表一个远程蓝牙设备

=============================================================================================

BluetoothGatt:蓝牙GATT Profile的公共APIs

BluetoothGattCallback:这个抽象类用于实现BluetoothGatt回调

BluetoothGattCharacteristic:代表一个Bluetooth GATT Characteristic.

                                              一个GATT Characteristic是用来构造一个GATT service,BluetoothGattService的基本数据元素

BluetoothGattDescriptor:代表一个Bluetooth GATT Descriptor.

                                           GATT Descriptor包括一个GATT characteristic,BluetoothGattCharacteristic的额外信息和属性.

Classes


BluetoothA2dp This class provides the public APIs to control the Bluetooth A2DP profile. 
BluetoothAdapter Represents the local device Bluetooth adapter. 
BluetoothAssignedNumbers Bluetooth Assigned Numbers. 
BluetoothClass Represents a Bluetooth class, which describes general characteristics and capabilities of a device. 
BluetoothClass.Device Defines all device class constants. 
BluetoothClass.Device.Major Defines all major device class constants. 
BluetoothClass.Service Defines all service class constants. 
BluetoothDevice Represents a remote Bluetooth device. 
BluetoothGatt Public API for the Bluetooth GATT Profile. 
BluetoothGattCallback This abstract class is used to implement BluetoothGatt callbacks. 
BluetoothGattCharacteristic Represents a Bluetooth GATT Characteristic

A GATT characteristic is a basic data element used to construct a GATT service,BluetoothGattService

BluetoothGattDescriptor Represents a Bluetooth GATT Descriptor

GATT Descriptors contain additional information and attributes of a GATT characteristic,BluetoothGattCharacteristic

BluetoothGattServer Public API for the Bluetooth GATT Profile server role. 
BluetoothGattServerCallback This abstract class is used to implement BluetoothGattServer callbacks. 
BluetoothGattService Represents a Bluetooth GATT Service

Gatt Service contains a collection of BluetoothGattCharacteristic, as well as referenced services. 

BluetoothHeadset Public API for controlling the Bluetooth Headset Service. 
BluetoothHealth Public API for Bluetooth Health Profile. 
BluetoothHealthAppConfiguration The Bluetooth Health Application Configuration that is used in conjunction with the BluetoothHealthclass. 
BluetoothHealthCallback This abstract class is used to implement BluetoothHealth callbacks. 
BluetoothManager High level manager used to obtain an instance of an BluetoothAdapter and to conduct overall Bluetooth Management. 
BluetoothServerSocket A listening Bluetooth socket. 
BluetoothSocket A connected or connecting Bluetooth socket. 

BluetoothGattServer:Bluetooth GATT Profileserver角色的公共APIs.

BluetoothGattServerCallback:这个抽象类用于实现BluetoothGattServer回调.

BluetoothGattService:代表一个Bluetooth GATT Service.

================================================================================

BluetoothHeadset:控制蓝牙耳机(Headset)服务的公共API.

BluetoothHealth:蓝牙Health Profile的公共API.

BluetoothHealthAppConfiguration:The Bluetooth Health Application Configuration(配置)用来与BluetoothHealth类结合.

BluetoothHealthCallback:用于实现BluetoothHealth回调的抽象类

BluetoothManager:用来获取BluetoothAdapter的实例的管理者,进行全面的蓝牙管理

BluetoothServerSocket:一个监听蓝牙的socket

BluetoothSocket:一个已连接或正在连接的蓝牙socket.

 

ATW

Timewarp

Asynchronous timewarp

How Does Time Warping Work

Difference_between_ATW_ASW_and_Reprojection 

 

Bluetooth

Bluetooth Core Specification

HID-over-GATT

NordicSemiconductor

Dialog-semiconductor

SmartBond™ DA14681

Android Bluetooth Low Energy

Nordic SDK and Documentation

Calculate throughput for a BLE link

Introduction to Bluetooth Low Energy

Android Lollipop: Bluetooth LE Matures

Bluetooth Low Energy vs. Classic Bluetooth

Getting Started with Bluetooth Low Energy

Maximizing BLE Throughput on iOS and Android

How different BLE packet types influence throughput

Analysis of Latency Performance of Bluetooth Low Energy (BLE) Networks

FTS4BT™ Bluetooth® Protocol Analyzer and Packet Sniffer

CPAS-11(Frontline_16.10.12321.12610)

 

Latency

Front Buffer Rendering

Reducing latency in mobile VR by using single buffered strip rendering

The importance of fine-grained GPU preemption support for VR

 

Tools

dotPeek

 

Touch

IQS525-B000

 

Unity

Unity Editor and Android Runtime for Daydream

Unity Download

GVR-Unity-SDK

Unity3d Quaternion

Unity优化技巧

四元数(Quaternion)和旋转

 

Qualcomm

基于骁龙 VR SDK的VR图形优化

 

EGL

EGL10

Tracer for OpenGL ES

编辑:凤凰新闻下载 本文来源:编造现实,使能notifyBluetooth低功耗设备

关键词: