4个帖子/ 0新
最后一篇
libra_13179
离线
最后一次露面:4年8月前
加入:2015-06-16 04:43
关于Exchange MTU for SDK5

嗨对话框,
1,我可以看到它。属性协议在蓝牙低能量链路上具有23个八位字节的默认最大传输单元(MTU)。如果设备想要发送较大的数据包,则必须协商更高的MTU大小。只有客户端可以启动此请求。但是,鉴于许多设备都有客户和服务器有效性,这不应该是一个关键问题。客户端请求包括客户端Receiver的MTU大小;服务器请求包括服务器Receiver的MTU大小。这两个值不能不具有相同的值。链接使用的MTU大小可以通过取消客户端Rx MTU和服务器RX MTU来计算。
2,
@file app_sps_proj.c..
@brief sps项目源代码。

/ **
****************************************************************************************
* @Brief发送Exchange MTU命令
*
* @return void.
****************************************************************************************
* /

void gattc_exc_mtu_cmd(void)
{
struct gattc_exc_mtu_cmd * cmd = ke_msg_alloc(gattc_exc_mtu_cmd,
ke_build_id(task_gattc,app_env.conidx),task_app,
gattc_exc_mtu_cmd);

cmd-> req_type = gattc_mtu_exch;

ke_msg_send(cmd);
}

#define app_cfg_max_mtu 160.
void app_configuration_func(ke_task_id_t const task_id,struct gapm_set_dev_config_cmd * cmd)
{
......
//定义最大传输单元
cmd-> max_mtu = app_cfg_max_mtu;
}
3,如何在SDK5中实现相同的功能。
我懂了。
1
[添加]
void gattc_exc_mtu_cmd(uint8_t connection_idx)
{
struct gattc_exc_mtu_cmd * cmd = ke_msg_alloc(gattc_exc_mtu_cmd,
KE_BUILD_ID(task_gattc,connection_idx),task_app,
gattc_exc_mtu_cmd);

cmd-> req_type = gattc_mtu_exch;

ke_msg_send(cmd);
}
void user_on_connection(uint8_t connection_idx,struct gapc_connection_req_ind const * param)
{
default_app_on_connection(connection_idx,param);
gattc_exc_mtu_cmd(connection_idx);
}
2.Tep.
@file user_config.h.
static const结构gapm_configuration user_gapm_conf = {
。role = gap_peripheral_slv,
.irk = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
///设备外观(0x0000 - 未知外观)
//根据填写https://developer.bluetooth.org/gatt/characteristics/pages/charracteristi ...
.appearance = 0,
.appearance_write_perm = gapm_write_disable,
.name_write_perm = gapm_write_disable,
/// maximal mtu.
.max_mtu = 160,////////////////////////////////////////////////////////////////////////////修改
///仅限外围设备:*******************************************************************
///在BLE双槽(1.25ms)中测量的连接间隔的从属的最低限度
///使用宏观MS_TO_DOUBLESLOTS从毫秒(MS)转换为双插槽
.con_intv_min = ms_to_doubleslots(10),
///从位于BLE双槽(1.25ms)中测量的连接间隔的最优选的最大值
///使用宏观MS_TO_DOUBLESLOTS从毫秒(MS)转换为双插槽
.con_intv_max = ms_to_doubleslots(20),
///从属喜欢连接延迟。它在跳过的连接事件中测量
.con_latency = 0,
///从机器单元(10 ms)测量的Slave优选链接监控超时
///使用宏观MS_TO_TIMERUNITS从毫秒(MS)转换为定时器单位
.superv_to = ms_to_timerUnits(1000),
///隐私设置位字段(0b1 =启用,0b0 =禁用)
/// - [位0]:隐私支持
/// - [位1]:多键支持(仅限外围设备);如果已启用,隐私标志是
/// 只读。
/// - [位2]:重新连接地址可见。
.flags = 0.
};

关键词:
设备:
mt_dialog.
离线
最后一次露面:2个月4周前
职员
加入:2015-06-08 11:34
嗨Libra_13179,

嗨Libra_13179,

您仍然可以使用gattc_exc_mtu_cmd函数,并将user_gapm_conf结构中的.max_mtu成员更改为要在user_config.h文件中使用的MTU大小。打电话给gattc_exc_mtu_cmd()在User_App_Connection中函数,您应该准备好。

谢谢mt_dialog.

libra_13179
离线
最后一次露面:4年8月前
加入:2015-06-16 04:43
嗨mt_dialog.

嗨mt_dialog.
感谢您的reply.i尝试在user_gapm_conf结构中修改.max_mtu = 160,并调用user_app_connection中的gattc_exc_mtu_cmd()函数,您应该准备好。
我发现Pack Max大小是128字节(MTU),如果超过128,请发送多个包。我使用手机应用程序到DSPS.WOW不是预定的MAX_MTU?
通过天秤座

mt_dialog.
离线
最后一次露面:2个月4周前
职员
加入:2015-06-08 11:34
嗨Libra_13179,

嗨Libra_13179,

抱歉,但我不确定我不确定你的问题,你不能将你的mtu设置超过128字节?

谢谢mt_dialog.