1)framework应该明确如何用最简单的方式定义并添加一个蓝牙GATT profile服务。蓝牙BLE有自己的协议标准,一个蓝牙服务service包括一个或者多个characteristics,而每个characteristics都包含对应UUID、属性描述(如可读、可写、长度等)、属性值value、属性配置(代表订阅信息)等等。
为了简化后续的数据处理,一般framework会设置一个handle来对应一个characteristics。
2)framework提供接口给用户来对各个characteristics的属性value进行设置和获取。
3)framework提供回调接口给用户,当主设备读characteristics回调读接口,以让用户进行特定操作后再进行传输;当主设备写characteristics时回调写接口,以让用户完成相应的操作。
4)framework提供用户接口,完成主动的notify和indicate操作。
OK,以上即是蓝牙BLE单芯片普遍的framework设计需求。我们在接触一款新的BLE单芯片时,只要能够重点把握好以上这20%的编程方法,就能快速进行应用开发。
五、Ti CC2541应用开发
TI CC2541 SDK有一个简单的示例工程SimpleBLEPeripheral,向开发人员展现如何进行蓝牙应用开发。我们通过这个工程来理解上述框架设计和编程。
1. 连接
1)定义广播数据
GAPRole_SetParameter(GAPROLE_ADVERT_DATA,…);
2)自定义扫描响应数据
GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA,…);
3)密码管理回调
ProcessPasscodeCB()
4)状态管理回调
peripheralStateNotificationCB()
2.通信控制
1)添加GATT服务
GATTServApp_RegisterService()
2)读回调
simpleProfile_ReadAttrCB()
3)写回调
simpleProfile_WriteAttrCB()
4 )属性值设置和获取
SimpleProfile_SetParameter()
SimpleProfile_GetParameter()
5)主动传输
GATT_Notification()
GATT_Indication()
参数可以对照具体的接口进行分析。我们在看具体的接口之前,可以思考一下,这些接口的参数应该包括什么东西,如果你能想到包括什么,恭喜你,你的应用框架设计能力已经大大提高了。