您好,
在我的应用程序中,我定义了一个自定义配置文件,它有一个自定义服务,该服务有两个自定义特征(1,2)。第二个特征用于向客户端发送一个字节数组,并发出通知。我遵循sample128示例(顺便说一句,这是一个很好的文档)编写了我的应用程序。我已将计时器配置为5秒,每次它在计时器中断处理程序中过期时,我都会调用ke\u msg\u send()来发送一个20字节的数组。同时,在我的客户端应用程序(BLE Scanner mobile app)上,当我为Characteristic 2启用通知时,我可以看到20字节不断以5秒的间隔到达。
接下来,我将在每次计时器过期时发送64字节。但是我在我的客户端应用程序(BLE Scanner mobile app)上注意到,当我为Characteristic 2启用通知时,我看到应用程序上只显示了20个字节。但是,如果我显式读取特征2,我会看到所有的64字节。
- 这是BTLE的限制。通知只能发送20字节吗?
- 还是我使用的客户端应用程序的限制?
- 我对我的应用程序所做的更改如下,但我不知道还需要做些什么。
到目前为止,我尝试实现这一点的方法如下:
步骤1:在app\u template\u proj.c文件中,在app\u configuration\u func(…)
函数中,将ATT\u MTU大小增加到67,我已经增加了:
…
…
//Maximum transmit unit size
cmd->;max\u mtu=67;//23
…
…
第2步:增加attmdb\u add\u service()
函数的total\u size
参数。
在template\u task.c中,在模板\u create \u db \u req \u handler()
函数中。
…
…
nb \u att \u 16=4;//4 UUID16属性声明类型
nb \u att \u 32=0;//0 UUID32属性声明类型
nb \u att \u 128=2;//2 UUID128属性声明类型
status=attmdb \u add \u服务(&;REDS)_环境红\u shdl),
任务XXXX,
nb_att_16,
nb_att_32,
nb_att_128,
121//见下面的计算);
//关贸总协定数据库的总数据部分=58个数据字节:
//16个主要服务声明
/+19个特征1声明
/+1个特征1值声明
/+19个特征声明2
/+64值特性2的声明
/+2客户端配置特性2的声明
/=121数据字节总数
…
…