如果你使用通知发送数据的话,受MTU大小限制,每个通知的长度为20字节。
请问可以修改这个值吗?比如一包数据传输125个字节,如何操作?谢谢!
你好,
MTU是可以修改的。可改为需要的值
我修改了,上位机对应蓝牙软件也收到返回值。但是数据发送异常,对应的蓝牙接受软件也得做出相应得修改才行吧?
应用程序应该不用。你用的什么应用,出现什么异常?
我们自己团队研发的一个应用,IOS和安卓系统都有,我搜索了一下工程里MTU,把所有原本23的位置都换成67了,然后修改了如下函数,加了user_gattc_exc_mtu_cmd (connection_idx);
Void default_app_on_connection(uint8_t connection_idx, struct gapc_connection_req_ind const *param){
如果(app_env [connection_idx]。conidx ! = GAP_INVALID_CONIDX){
如果(user_default_hnd_conf.adv_scenario = = DEF_ADV_WITH_TIMEOUT)app_easy_gap_advertise_with_timeout_stop ();default_advertise_stop_operation ();
app_prf_enable (param - > conhdl);user_gattc_exc_mtu_cmd (connection_idx);如果(user_default_hnd_conf.security_request_scenario==DEF_SEC_REQ_ON_CONNECT) && (BLE_APP_SEC)){app_easy_security_request (connection_idx);}}其他的{//没有建立连接,重新启动广告EXECUTE_DEFAULT_OPERATION_VOID (default_operation_adv);}返回;
}
发送出去的数据如果大于23字节,应用端是收不到的。发现发送缓存区的数据没有更新,还是指令交互的内容,不是这次更新的数据包
你好,我进行修改MTU的部分如下:
Static const struct gapm_configuration user_gapm_conf={.role = GAP_PERIPHERAL_SLV,.irk = {0 x00 0 x00 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00},///设备外观(0x0000 -未知外观)//根据……填写https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml.appearance = 0,.appearance_write_perm = GAPM_WRITE_DISABLE,.name_write_perm = GAPM_WRITE_DISABLE,/ / /最大MTU/ / 23日.max_mtu = 67,/ / /外围 : *****************************************************************在双槽中测量的最小连接间隔(1.25ms)///使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽.con_intv_min = MS_TO_DOUBLESLOTS (10),
......
连接函数中修改:
Void user_app_on_connection(uint8_t connection_idx, struct gapc_connection_req_ind const *param){default_app_on_connection (connection_idx参数);connection_status = true;user_gattc_exc_mtu_cmd (connection_idx);app_easy_gap_param_update_start (connection_idx);/ / notitysend_type = 0;notify_timer = 0;
用Hollong BLE抓包的话,如附件情况:
但是空中丙氨酸数据没有更新,还是上一条数据,不是我发的64字节数据,我在发64字节数据之前,上报了一个电量信息,是10字节。修改MTU之后,收到的攻击力一直是10字节电量信息,使用的是通知
请提供更多信息以便分析:
附上实现通知的代码
用于通知的特征的价值长度是多少吗?
提供通知的抓包情况
你好,
MTU是可以修改的。可改为需要的值
我修改了,上位机对应蓝牙软件也收到返回值。但是数据发送异常,对应的蓝牙接受软件也得做出相应得修改才行吧?
你好,
应用程序应该不用。你用的什么应用,出现什么异常?
我们自己团队研发的一个应用,IOS和安卓系统都有,我搜索了一下工程里MTU,把所有原本23的位置都换成67了,然后修改了如下函数,加了user_gattc_exc_mtu_cmd (connection_idx);
Void default_app_on_connection(uint8_t connection_idx, struct gapc_connection_req_ind const *param)
{
如果(app_env [connection_idx]。conidx ! = GAP_INVALID_CONIDX)
{
如果(user_default_hnd_conf.adv_scenario = = DEF_ADV_WITH_TIMEOUT)
app_easy_gap_advertise_with_timeout_stop ();
default_advertise_stop_operation ();
app_prf_enable (param - > conhdl);
user_gattc_exc_mtu_cmd (connection_idx);
如果(user_default_hnd_conf.security_request_scenario==DEF_SEC_REQ_ON_CONNECT) && (BLE_APP_SEC))
{
app_easy_security_request (connection_idx);
}
}
其他的
{
//没有建立连接,重新启动广告
EXECUTE_DEFAULT_OPERATION_VOID (default_operation_adv);
}
返回;
}
发送出去的数据如果大于23字节,应用端是收不到的。发现发送缓存区的数据没有更新,还是指令交互的内容,不是这次更新的数据包
你好,我进行修改MTU的部分如下:
Static const struct gapm_configuration user_gapm_conf={
.role = GAP_PERIPHERAL_SLV,
.irk = {0 x00 0 x00 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00},
///设备外观(0x0000 -未知外观)
//根据……填写https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml
.appearance = 0,
.appearance_write_perm = GAPM_WRITE_DISABLE,
.name_write_perm = GAPM_WRITE_DISABLE,
/ / /最大MTU
/ / 23日.max_mtu = 67,
/ / /外围 : *****************************************************************
在双槽中测量的最小连接间隔(1.25ms)
///使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.con_intv_min = MS_TO_DOUBLESLOTS (10),
......
连接函数中修改:
Void user_app_on_connection(uint8_t connection_idx, struct gapc_connection_req_ind const *param)
{
default_app_on_connection (connection_idx参数);
connection_status = true;
user_gattc_exc_mtu_cmd (connection_idx);
app_easy_gap_param_update_start (connection_idx);
/ / notity
send_type = 0;
notify_timer = 0;
}
用Hollong BLE抓包的话,如附件情况:
但是空中丙氨酸数据没有更新,还是上一条数据,不是我发的64字节数据,我在发64字节数据之前,上报了一个电量信息,是10字节。修改MTU之后,收到的攻击力一直是10字节电量信息,使用的是通知
你好,
请提供更多信息以便分析:
附上实现通知的代码
用于通知的特征的价值长度是多少吗?
提供通知的抓包情况