你能在BLE中提出自己的服务吗?

时间:2013-07-02 13:34:03

标签: bluetooth core-bluetooth bluetooth-lowenergy

我查看了BLE规范,发现蓝牙SIG已预先定义了许多服务,如心率。我只是想知道我是否可以自己定义服务?如果可以的话,有没有可用的例子?感谢。

2 个答案:

答案 0 :(得分:7)

是的,完全有可能自己定义服务。

服务和特征都由UUID标识。例如,BLE Services页面列出了所有标准化服务和分配的UUID。

正如您所见,心率服务使用0x180D,这是一种仅为标准化服务保留的16位简短形式。定义自己的服务时唯一的要求是使用128位长格式UUID。

使用uuidgen(在Mac OS X上提供)自行生成随机(唯一)UUID:

uuidgen
# example result: 94B01578-5603-4D5A-8DFF-9365A1C4AC93

您可以使用它来发布和识别您自己的服务。这可以在您自己的自定义硬件上完成,也可以通过iOS上的软件完成(因为您提到了核心蓝牙)。

创建CBMutableService

CBUUID *serviceUUID = [CBUUID UUIDWithString:@"94B01578-5603-4D5A-8DFF-9365A1C4AC93"];
CBMutableService *myService = [[CBMutableService alloc] initWithType:serviceUUID primary:YES];
// add some characteristics, also identified by your own custom UUIDs.

最后看addService:& CBPeripheralManager {{1}} {}开始发布您的自定义服务。

使用iOS设备发布此服务后,您可以使用startAdvertising:类使用其他iOS设备或Mac扫描并连接到该服务。

答案 1 :(得分:2)

这是一个演示应用程序,其中包含在iOS设备上设置您自己的蓝牙LE服务的示例:SimpleShare

您需要生成应用程序服务所特有的UUID。 This site将生成一个供您使用。