Web Bluetooth API

蓝牙工作机制相关:
电磁波,是由同相振荡且互相垂直的电场磁场在空间中以的形式传递能量动量,其传播方向垂直于电场与磁场构成的平面。电磁辐射的载体为光子
GAP(通用访问协议)、GATT(通用属性协议)
GAP层有4种不同类型的广播:通用的、定向的、不可连接的以及可发现的。
通常,一个广播中的设备会每一秒广播一次 // 开启蓝牙就一直广播
通用属性协议(GATT)配置文件在属性协议(ATT)的基础上构建,为属性协议传输和存储数据建立了一些通用操作和框架。
GATT定义了两个角色:服务器和客户端。// 协商处理 pin 验证
属性在当经由属性协议传输时,会被格式化为相关的服务和特性。
服务可能包括许多特征。特征包括单一值和许多描述特征值的描述符。
为了区分数据类型,一串128位的数字被用来标识属性的类型。叫做通用唯一识别码(UUID) // 服务和特性都有



navigator.bluetooth.requestDevice({
filters: [{ name: 'Arduino101' }]
})
.then(device => { // 这里就已经链接了蓝牙设备;不能发现手机?难道只能发现不需要pin验证的?
return device.gatt ? device.gatt.connect() : device.connectGATT();
})
.then(servers => {
return servers.getPrimaryService(0xFC00); // 服务 和 特征是可以在那个蓝牙设备上设置的么?
})
.then(service => {
service.getCharacteristic(0xFC0A)
.then(characteristic => {
characteristic.addEventListener('characteristicvaluechanged', this.onTemperatureChange);
characteristic.startNotifications(); // 添加到通知上下文 // ???
return characteristic.writeValue(ArrayBuffer);
});
})