你好,
在我定义了一个应用程序定制的概要文件,它有一个自定义服务这有两个服务自定义特征(1、2)。第二个特点是用于向客户机发送的字节数组与通知。我跟着sample128例子(顺便说一句这么好的文档)写我的应用程序。我已经配置了计时器5秒每次到期后在定时器中断处理程序我打电话ke_msg_send ()发送一个20字节数组。与此同时,在我的客户应用程序(BLE扫描仪手机应用程序)我使特征2的通知时,我能看到20个字节不断到达间隔5秒。
下一个,而不是20字节,我发送64个字节每次计时到期。但是我注意到在我的客户端应用程序(BLE扫描仪手机应用程序),当我为特征2启用通知,我看到只有20字节显示在应用。然而,如果我明确阅读的特点2我看到所有的64个字节。
- 这是一个BTLE的限制。是通知只能发送20个字节?
- 还是一个限制我使用客户端应用程序的?
- 更改我下面是我的申请,但是我不知道需要做什么。
我到目前为止试图实现这一目标如下:
步骤1:ATT_MTU大小增加到67个
app_template_proj。c文件,里面的app_configuration_func (…)
功能,我增加了:
…
…
/ /最大传输单元的大小
cmd - > max_mtu = 67;/ / 23
…
…
步骤2:增加total_size
参数的attmdb_add_service ()
函数。
template_task。c,内template_create_db_req_handler ()
函数。
…
…
nb_att_16 = 4;/ / 4 UUID16属性声明类型
nb_att_32 = 0;/ / 0 UUID32属性声明类型
nb_att_128 = 2;/ / 2 UUID128属性声明类型
状态= attmdb_add_service (& (REDS_env.REDS_shdl),
TASK_XXXX,
nb_att_16,
nb_att_32,
nb_att_128,
121 / /见下面的计算);
/ /数据部分关贸总协定数据库= 58数据字节总数:
/ / 16主要服务声明
/ / + 19宣言特点1
/ / + 1值宣言特点1
/ / + 19宣言特点2
/ / + 64的价值宣言特点2
/ / + 2客户端配置特征2的宣言
/ / = 121字节数据
…
…
嗨vikramtheone,
我认为这篇文章补充上一个……事情是这样的,你可以从你的手机读取64字节的数据库,但你不能启用通知和接收所有64字节。通知和适应症仅支持当前MTU的外围,即使你改变你的广告的MTU程序,你的客户能够接受它为了转移所有通知数据包的有效载荷。后设置的MTU app_configuration_func()你必须调用GATT_EXC_MTU_CMD为了告诉cenral跟随你的MTU设置。并由中央是否会遵守外围设备的建议。你可以找到如何发出gattc_exc_mtu_cmd需求方在app_sps_device_project中的应用。c文件。
由于MT_dialog
哇!这工作。
我实现的,而使用
gattc_exc_mtu_cmd ()
函数从gsp时应用程序(也在4.3节:阅读更多关于它的配置,在RW-BLE-GATT-IS.pdf),称为函数的app_connection_func ()
函数在调用app_template_enable ()
就像它是如何在gsp时应用程序。和android手机应用程序(BLE扫描仪)已经接受了GATT_EXC_MTU_REQ
请求发送的设备一旦我启用通知特点2中我开始看到64字节。结论:有可能大于20字节发送和接收通知。
谢谢你的帮助。
这似乎很好。谢谢你的分享。