本次要实现的功能是基于CC2640R2完成串口与手机app的数据透传,即串口发出去的数据在手机app上能收到,手机app发出的数据在串口上打印出来。
一、在实现透传功能之前,需要了解蓝牙数据传输的原理
1.蓝牙数据的传输都是基于Characteristic来操作,在simple_gatt_profile.c文件中定义了5个Characteristic,其中Characteristic3具有写权限,Characteristic4具有notify权限,所以我们在做数据透传时,用Characteristic3来接收来自手机的数据,用Characteristic4来往手机app发数据。
2.这里我们将Characteristic3 和Characteristic4 修改为数组形式,长度定义为20,即数据收发最大长度为20字节。
3.手机往Characteristic3写数据时,蓝牙协议栈先检查该Characteristic3是否具有写权限,如果有写权限,则调用simpleProfile_WriteAttrCB,然后往app发消息,在app的任务中去处理该消息,将收到的数据做处理。
4.2640向手机发数据时,调用SimpleProfile_SetParameter,检查是否具有notify权限,然后调用simpleProfile_ReadAttrCB将数据发出去。
二、测试结果:
由上图可以看到,数据透传功能正常。而且还打印出了GAP_Role的各种状态。
三、大数据量透传
1.在app工程设置中添加一个MAX_PDU_SIZE的定义即可,这里设置成为255,表示最大传输数据量为255字节。如下:
2.在simple_gatt_profile.c中修改