DA14580主从设备,我想1秒内发送只是500字节到主设备,使用Nofity还是Read好呢? 好像都受MTU的限制,MTU要如何更改呢,atts_mtu_exc_resp (uint8_t conidx, struct l2cc_att_mtu_req* req);这个函数来协商吗?
我用定时器来Nofity发送数据时,我在gattc层使用gattc_set_mtu() 和gattc_get_mtu(),也在usr_config更改了max mtu,但是定时器死掉了。
Device:
你好,
请问你是想在1s内发送500bytes,还是想“一次性”发送500bytes?
前者可参考 dsps 例程的实现://www.wsdof.com/products/dialog-serial-port-service...
后者才需要用到 MTU。MTU 也需要主机支持才能修改成功。
你好,我是想1s内主机至少能够收到500bytes。
我现在修改MTU成功了之后,主机同时连接2-3个从机,用主机读方式获取数据,定时器最快设置为35,连接间隔为7,当其中一个从机断开后,主机就挂了,无法重连和继续读取,这么不稳定的情况如何解决?如何检测是否GATTC发生的错误? 主机定时读取和读取接收数据如下:
void test_read_ind_handler(void)
{
uint8 i;
struct testh_env_tag *testh_read = PRF_CLIENT_GET_ENV( TASK_GATTC, testh);
for(i=0; i < (APP_EASY_MAX_ACTIVE_CONNECTION);i++)
{
testh_send_event_read( &testh_read->con_info,
app_env[i].conidx,
testh_read->testh.chars[TESTH_LONG_VAL_CHAR].val_hdl
);
}
ke_timer_set(READ_SEND, TASK_APP, 35);
}
static int gattc_read_ind_handler( ke_msg_id_t const msgid,
struct gattc_read_ind const *param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
uint8_t connection_idx = KE_IDX_GET(src_id);
struct testh_env_tag *testh_env = PRF_CLIENT_GET_ENV(dest_id, testh);
if (testh_env != NULL) //PRF_ERR_UNEXPECTED_LEN
{
if(connection_idx == 0)
{
printf("read 0 %s\r\n",param->value);
}
if(connection_idx == 1)
{
printf("read 1 %s\r\n",param->value);
}
if(connection_idx == 2)
{
printf("read 2 %s\r\n",param->value);
}
}
else
{
printf("read_ind == NULL\r\n");
}
if( testh_env->testh.svc.shdl == ATT_INVALID_HANDLE) //无效
{
ke_state_set (TASK_TESTH测试工程师TH_IDLE);
}
return (KE_MSG_CONSUMED);
}
你好,
有一个 multilink demo,已发送你 qq 邮箱