2年前
写入长特征值
发布的jarirenejensen0点 1回复阅读“Training_02_custom_profile_example_v1.1”,它说明了user_custs1_def.h中的长特征“演示写入长特征值”。它被定义为50字节长。但是我没有看到代码处理对这个特性的写入。
形式
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-b..。
看起来堆栈应该能够处理512字节大小的特征。
我可以导致R/W 20字节,但不能更多。我使用示例中的user_catch_rest_hndl()函数并捕获SVC1_IDX_CONTROL_POINT_VAL。在这个例子中,它调用了一个空函数。信号只包含前20个字节。
为了测试,我已经使用Bluegiga GUI工具发送50字节的数据,这似乎很高兴写50字节,但不是51字节,这是OK的大小是50。使用read或read long进行读取只能产生20个字节。
“演示写入长特征值”的代码隐藏在哪里?
致以最亲切的问候
2年前
嗨jarirenejensen,
SDK的ble_app_peripheral示例实现了写长特征值。请看看这个SDK的例子。如果要写入的特征值的长度大于20字节,则会触发user_catch_rest_hndl()函数中的user_svc1_long_val_att_info_req_handler()。如果长度小于20字节,将执行user_svc1_long_val_wr_ind_handler()。因此,如果您希望发送超过20个字节而不使用MTU交换,那么您应该执行与ble_app_peripheral示例中的user_svc1_long_val_att_info_req_handler()函数相同的实现。因为你这样做了,主服务器将发送一个“Prepare Write Request”,从服务器将响应一个“Prepare Write response”。否则,如果您想做一个简单的写请求并发送超过20个字节,您应该增加MTU大小。
谢谢,PM_Dialog