7个帖子/ 0个新
最后发表
凯恩
离线
最后看到:9个月1个星期前
加入:2019-07-25 08:44
DA14580 MTU

如果你使用通知发送数据的话,受MTU大小限制,每个通知的长度为20字节。

请问可以修改这个值吗?比如一包数据传输125个字节,如何操作?谢谢!

设备:
CYibin
离线
最后看到:7个月,3个星期前
工作人员
加入:2017-12-14 02:48
你好,MTU是可以修改的。可改为需要的值

你好,

MTU是可以修改的。可改为需要的值

凯恩
离线
最后看到:9个月1个星期前
加入:2019-07-25 08:44
我修改了,上位机对应蓝牙软件也收到返回值。但是数据发送异常

我修改了,上位机对应蓝牙软件也收到返回值。但是数据发送异常,对应的蓝牙接受软件也得做出相应得修改才行吧?

CYibin
离线
最后看到:7个月,3个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

应用程序应该不用。你用的什么应用,出现什么异常?

凯恩
离线
最后看到:9个月1个星期前
加入:2019-07-25 08:44
我们自己团队研发的一个应用,IOS和安卓系统都有

我们自己团队研发的一个应用,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);

if ((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字节,应用端是收不到的。发现发送缓存区的数据没有更新,还是指令交互的内容,不是这次更新的数据包

凯恩
离线
最后看到:9个月1个星期前
加入:2019-07-25 08:44
你好,我进行修改MTU的部分如下:

你好,我进行修改MTU的部分如下:

静态const struct gapm_configuration
.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,
/ / /外围 : *****************************************************************
///在ble double插槽中测量的最小连接间隔(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字节电量信息,使用的是通知

CYibin
离线
最后看到:7个月,3个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

请提供更多信息以便分析:

附上实现通知的代码

用于通知的特征的价值长度是多少吗?

提供通知的抓包情况