你好,
对读取长特征的响应有一个问题。
IT通过读取LONG命令在GATT客户端请求变量的接缝将始终导致GATT服务器(对话框)的数据发送,512字节(在课程的20个字节的块中)。
这里一些代码片段:
#define size_of_data_block 4096 / *这编译得很好,但gatt服务器只会发送前512字节* /uint8_t datadumpvar [size_of_data_block];
ble_uuid_from_string(“某种uuid-id”,&uuid);
BLE_GATTS_ADD_CHAROURATIC(&UUID,GATT_PROP_READ,ATT_PERM_READ,
size_of_data_block,gatts_flag_char_read_req,null,&custs-> datadump_val_h);
静态void handle_read_req(ble_service_t * svc,const ble_evt_gatts_read_req_t * evt)
{
cust_service_t * cust =(cust_service_t *)svc;
if(evt-> handle == cust-> datadump_val_h){
ble_gatts_read_cfm(evt-> conn_idx,evt->句柄,att_error_ok,size_of_data_block,&datadumpvar [0]);
}
}
- >此代码已被简化以支持问题< -
上面的代码有效,没有错误,没有断开连接,只有512字节的限制得到发送。
编辑:抱歉刚检查过。size_of_data_block 4096.
编译但无法在设备上运行。size_of_data_block 512.
工作正常
现在我的问题是双重的:
1.定义了512个字节限制在哪里?
有些思想已经进入设置这个限制,问题是,为什么512?如果我增加这个限制,最好是4096,但我猜我猜这是较大的龙,那么龙会面临什么。
谢谢,
罗伯特
嗨myken,
它在ROM中的BLE堆栈中定义,因为它由BLE规范决定为应为512字节的最大长度,请检查该规范以获取更多信息。
谢谢mt_dialog.
谢谢,我害怕......