嗨,我们使用外围模式工作到DA14585。我们在SDK中使用ble_app_peripheral_example。在该示例中,我们删除了Service-2,Service-3并排除了淡化。我们只有1个服务和1个特点,烫发(WR,启用)|perm(write_req,启用)。
我们的服务定义如此
const struct attm_desc_128 custs1_att_db [custs1_idx_nb] =
{
/ *************************
*服务1配置
*************************
* /
//服务1声明
[svc1_idx_svc] = {(uint8_t *)和att_decl_svc,att_uuid_128_len,perm(rd,启用),
sizeof(custs1_svc1),sizeof(custs1_svc1),(uint8_t *)&custs1_svc1},
//长价特征声明
[svc1_idx_long_value_char] = {(uint8_t *)和att_decl_char,att_uuid_16_len,perm(rd,启用),
0,0,null},
//长值特征值
[svc1_dx_long_value_val] = {svc1_long_value_uuid_128,att_uuid_128_len,perm(wr,启用)|perm(write_req,启用),
400,0,null},
};
我们编译应用程序并加载DA14585。然后用于测试我们连接到我们的设备。(使用带NRF Connect测试应用程序的Android手机)我们可以从客户端设备写入服务器设备(在本例中的服务器DA14585中)各种长度消息。5个字节,20个字节,200个字节,270字节,所有测试正常。但如果我们想写超过285个字节;我们的测试应用程序(NRF Connect)与DA14585断开(带GATT_ERROR和GATT_CONN_TIMEOUT)和DA14585不感知这种情况。
问题:
- 我如何在DA14585中感知这种情况?
- 我如何递增gatt_conn_timeout?(我在user_config.h中增加/减少监督超时,但不要改变任何东西)
谢谢...
嗨Ltdev,
我假设这个问题与以下论坛机票有关:
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bluetooth-low-energy-%2%80%93-software/gatt-peripheral-mode-write-char-size.
谢谢,PM_DIALOG.
嗨;
- 我们只在我们的定制董事会上有UART。这样我们就无法使用JTAG调试它。
- 我在user_app_connection和user_app_disconn中添加一些printf消息
{
//服务1声明
[svc1_idx_svc] = {(uint8_t *)和att_decl_svc,att_uuid_128_len,perm(rd,启用),
sizeof(custs1_svc1),sizeof(custs1_svc1),(uint8_t *)&custs1_svc1},
//长价特征声明
[svc1_idx_long_value_char] = {(uint8_t *)和att_decl_char,att_uuid_16_len,perm(rd,启用),
0,0,null},
//长值特征值
[svc1_dx_long_value_val] = {svc1_long_value_uuid_128,att_uuid_128_len,perm(wr,启用)|perm(write_req,启用),
400,0,null},
};
在Beginnin中,我们有2个问题
1-当我定义结构时;
{
//服务1声明
[svc1_idx_svc] = {(uint8_t *)和att_decl_svc,att_uuid_128_len,perm(rd,启用),
sizeof(custs1_svc1),sizeof(custs1_svc1),(uint8_t *)&custs1_svc1},
//长价特征声明
[svc1_idx_long_value_char] = {(uint8_t *)和att_decl_char,att_uuid_16_len,perm(rd,启用),
0,0,null},
//长值特征值
[svc1_dx_long_value_val] = {svc1_long_value_uuid_128,att_uuid_128_len,perm(wr,启用)|perm(write_req,启用),
50,0,null},
};
在这种情况下,我试图向特征写入51字节,我得到attr_len_err。在THAR后,我将50个字节更改为400字节。那个问题解决了。
2-)解决问题-1我定义了这样的服务结构
{
//服务1声明
[svc1_idx_svc] = {(uint8_t *)和att_decl_svc,att_uuid_128_len,perm(rd,启用),
sizeof(custs1_svc1),sizeof(custs1_svc1),(uint8_t *)&custs1_svc1},
//长价特征声明
[svc1_idx_long_value_char] = {(uint8_t *)和att_decl_char,att_uuid_16_len,perm(rd,启用),
0,0,null},
//长值特征值
[svc1_dx_long_value_val] = {svc1_long_value_uuid_128,att_uuid_128_len,perm(wr,启用)|perm(write_req,启用),
400,0,null},
};
在这种情况下,我可以写入最多285字节的特征。当我尝试编写超过285年的字节;我的客户端设备(在Android上的测试用例中,在Android上的应用程序)GOT GATT_TIMEOUT_ERR并断开连接。但我的服务器设备(DA14585自定义板)不感知此断开连接状态。所以不要再开始宣传。我无法再次连接它。
我希望这条消息清楚。
尊重...
嗨Ltdev,
您是否从外部SPI闪存或系统RAM启动?
如果从System-RAM启动并且设备无关,则此方法将被冻结到断言或WDOG已过期或已发生NMI。
您可以通过从SPI Flash引导来验证此功能,您将看到设备重新启动。
您应该以某种方式在调试模式下运行该项目,并尝试在冻结代码的位置。否则我们无法知道问题的根本原因是什么。
您有任何对话DKS吗?由于您在板上没有JTAG接口,因此可以使用任何对话框DK。所有DA145xx开发套件包含一个Segger J-Link设备,提供串行电线调试(SWD)功能。
http://lpccs-docs.dialog-seminiondiond.com/tutorial_sdk6/debug_probe.html.
谢谢,PM_DIALOG.
嗨,我解决了没有j-link的问题
谢谢
嗨Ltdev,
很高兴你解决这个问题。如果您有任何其他后续问题,请创建一个新的论坛帖子。
谢谢,PM_DIALOG.