你好,咨询一下,在数据传输的过程中如何保证对端设备收到了我们发送的数据。会不会存在丢包的情况,如果存在,对于丢包情况是怎么处理的,丢了就丢了?如果有警报信息需要传送,丢包应该是不能接受的吧……谢谢!
如果应用这层,只能通过gattc_cmp_evt_handler函数来处理返回的消息,看接收的情况。蓝牙芯片的底层,按照数据进入的先后顺序,保证远端一定要收到才发送下一个。通过(SN /公布序号来控制)。如果超过链路监管时间,蓝牙连接就断了。
你好,1)是不是说蓝牙芯片的底层是有报文缓冲区的,应用程序层启动数据发送后,报文是进入缓冲区的,然后按照报文进入的先后顺序进行发送吗?2)如果底层的报文缓冲区满了,该如何处理呢,先进入缓冲区的先删除?3)如果在连接断开的情况下,我能不能继续往底层报文发送缓冲区写数据,一旦连接建立,自动按进入的先后顺序发送?缓冲区的大小可控制吗?4)蓝牙传输本身是可靠传输?那么,底层的保证机制是SN /公布序号,意思是不是:每发一个包,只有对端设备回了包,才会发下一个包吗?对应到应用程序层,通过gattc_cmp_evt_handler函数来处理返回的消息,但是它应该是没办法区分是哪个报文发送成功的返回消息的吧?Static int gattc_cmp_evt_handler(ke_msg_id_t const msgid, struct gattc_cmp_evt const *param,Ke_task_id_t const dest_id, Ke_task_id_t const src_id){开关(param - > req_type){案例GATTC_NOTIFY:{//发送确认到APP,该值被发送/没有htpt_temp_send_cfm_send (param - >状态,HTPT_THERM_TEMP_SEND);}打破;
案例GATTC_INDICATE:{//发送确认到APP,该值被发送/没有htpt_temp_send_cfm_send (param - >状态,HTPT_CENTRAL_IND_CFM);}打破;默认值:休息;}
返回(KE_MSG_CONSUMED);}谢谢!
蓝牙底层保证了数据传输的可靠性,有相应的重传机制,如果超出规定的时间,连接就会断开,上面应用层做相应的处理
1 .一般发往远端设备的报文处理流程如下:应用程序- > GAPC - > GATTC - > L2CAP层。其中L2CAP层会按照你的报文大小进行分配空间,如果空间不够,直接断言。另外,如果远端设备因为链路超时,也会发送断开连接的指令。此时第一步即应用程序- > GAPC这一层就走不通,因为没有连接,报文直接丢弃。2 .报文满了,就直接断言了,蓝牙连接会断3.蓝牙连接断开了,是发不了的。你只能控制应用程序层的缓冲区,可以参考需求方的工程4.对,没办法区分。这个只能应用程序层做数据索引了。
如果应用这层,只能通过gattc_cmp_evt_handler函数来处理返回的消息,看接收的情况。
蓝牙芯片的底层,按照数据进入的先后顺序,保证远端一定要收到才发送下一个。通过(SN /公布序号来控制)。如果超过链路监管时间,蓝牙连接就断了。
你好,
1)是不是说蓝牙芯片的底层是有报文缓冲区的,应用程序层启动数据发送后,报文是进入缓冲区的,然后按照报文进入的先后顺序进行发送吗?
2)如果底层的报文缓冲区满了,该如何处理呢,先进入缓冲区的先删除?
3)如果在连接断开的情况下,我能不能继续往底层报文发送缓冲区写数据,一旦连接建立,自动按进入的先后顺序发送?缓冲区的大小可控制吗?
4)蓝牙传输本身是可靠传输?那么,底层的保证机制是SN /公布序号,意思是不是:每发一个包,只有对端设备回了包,才会发下一个包吗?对应到应用程序层,通过gattc_cmp_evt_handler函数来处理返回的消息,但是它应该是没办法区分是哪个报文发送成功的返回消息的吧?
Static int gattc_cmp_evt_handler(ke_msg_id_t const msgid, struct gattc_cmp_evt const *param,
Ke_task_id_t const dest_id, Ke_task_id_t const src_id)
{
开关(param - > req_type)
{
案例GATTC_NOTIFY:
{
//发送确认到APP,该值被发送/没有
htpt_temp_send_cfm_send (param - >状态,HTPT_THERM_TEMP_SEND);
}
打破;
案例GATTC_INDICATE:
{
//发送确认到APP,该值被发送/没有
htpt_temp_send_cfm_send (param - >状态,HTPT_CENTRAL_IND_CFM);
}
打破;
默认值:休息;
}
返回(KE_MSG_CONSUMED);
}
谢谢!
蓝牙底层保证了数据传输的可靠性,有相应的重传机制,如果超出规定的时间,连接就会断开,上面应用层做相应的处理
1 .一般发往远端设备的报文处理流程如下:应用程序- > GAPC - > GATTC - > L2CAP层。其中L2CAP层会按照你的报文大小进行分配空间,如果空间不够,直接断言。另外,如果远端设备因为链路超时,也会发送断开连接的指令。此时第一步即应用程序- > GAPC这一层就走不通,因为没有连接,报文直接丢弃。
2 .报文满了,就直接断言了,蓝牙连接会断
3.蓝牙连接断开了,是发不了的。你只能控制应用程序层的缓冲区,可以参考需求方的工程
4.对,没办法区分。这个只能应用程序层做数据索引了。