mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-04 15:39:59 +00:00
queue RLS RSP instead of sending right away
This commit is contained in:
parent
e6606e1fc1
commit
677957dd8b
39
src/rfcomm.c
39
src/rfcomm.c
@ -1638,16 +1638,10 @@ static void rfcomm_channel_state_machine(rfcomm_channel_t *channel, rfcomm_chann
|
||||
|
||||
if (event->type == CH_EVT_RCVD_RLS_CMD){
|
||||
rfcomm_channel_event_rls_t * event_rls = (rfcomm_channel_event_rls_t*) event;
|
||||
// orig
|
||||
// channel->rls_line_status = event_rls->line_status & 0x0f;
|
||||
// log_info("CH_EVT_RCVD_RLS_CMD setting line status to 0x%0x", channel->rls_line_status);
|
||||
// rfcomm_emit_remote_line_status(channel, event_rls->line_status);
|
||||
|
||||
// direct response
|
||||
channel->rls_line_status = event_rls->line_status & 0x0f;
|
||||
log_info("CH_EVT_RCVD_RLS_CMD setting line status to 0x%0x", channel->rls_line_status);
|
||||
rfcomm_emit_remote_line_status(channel, event_rls->line_status);
|
||||
rfcomm_send_uih_rls_rsp(multiplexer, channel->dlci, event_rls->line_status);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: integrate in common swich
|
||||
@ -1665,6 +1659,13 @@ static void rfcomm_channel_state_machine(rfcomm_channel_t *channel, rfcomm_chann
|
||||
rfcomm_send_uih_msc_rsp(multiplexer, channel->dlci, 0x8d); // ea=1,fc=0,rtc=1,rtr=1,ic=0,dv=1
|
||||
return;
|
||||
}
|
||||
if (channel->rls_line_status != RFCOMM_RLS_STATUS_INVALID){
|
||||
log_info("Sending RLS RSP 0x%0x", channel->rls_line_status);
|
||||
uint8_t line_status = channel->rls_line_status;
|
||||
channel->rls_line_status = RFCOMM_RLS_STATUS_INVALID;
|
||||
rfcomm_send_uih_rls_rsp(multiplexer, channel->dlci, line_status);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// emit MSC status to app
|
||||
@ -1852,21 +1853,12 @@ static void rfcomm_channel_state_machine(rfcomm_channel_t *channel, rfcomm_chann
|
||||
rfcomm_channel_state_add(channel, RFCOMM_CHANNEL_STATE_VAR_SEND_MSC_RSP);
|
||||
break;
|
||||
case CH_EVT_READY_TO_SEND:
|
||||
log_info("CH_EVT_READY_TO_SEND line status to 0x%0x", channel->rls_line_status);
|
||||
|
||||
if (channel->new_credits_incoming) {
|
||||
uint8_t new_credits = channel->new_credits_incoming;
|
||||
channel->new_credits_incoming = 0;
|
||||
rfcomm_channel_send_credits(channel, new_credits);
|
||||
break;
|
||||
}
|
||||
if (channel->rls_line_status != RFCOMM_RLS_STATUS_INVALID){
|
||||
log_info("Should send line status to 0x%0x", channel->rls_line_status);
|
||||
uint8_t line_status = channel->rls_line_status;
|
||||
channel->rls_line_status = RFCOMM_RLS_STATUS_INVALID;
|
||||
rfcomm_send_uih_rls_rsp(multiplexer, channel->dlci, line_status);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CH_EVT_RCVD_CREDITS: {
|
||||
// notify daemon -> might trigger re-try of parked connections
|
||||
@ -1874,19 +1866,6 @@ static void rfcomm_channel_state_machine(rfcomm_channel_t *channel, rfcomm_chann
|
||||
(*app_packet_handler)(channel->connection, DAEMON_EVENT_PACKET, channel->rfcomm_cid, event, sizeof(event));
|
||||
break;
|
||||
}
|
||||
case CH_EVT_RCVD_RLS_CMD: {
|
||||
rfcomm_channel_event_rls_t * event_rls = (rfcomm_channel_event_rls_t*) event;
|
||||
// orig
|
||||
// channel->rls_line_status = event_rls->line_status & 0x0f;
|
||||
// log_info("CH_EVT_RCVD_RLS_CMD setting line status to 0x%0x", channel->rls_line_status);
|
||||
// rfcomm_emit_remote_line_status(channel, event_rls->line_status);
|
||||
|
||||
// direct response
|
||||
log_info("CH_EVT_RCVD_RLS_CMD setting line status to 0x%0x", channel->rls_line_status);
|
||||
rfcomm_emit_remote_line_status(channel, event_rls->line_status);
|
||||
rfcomm_send_uih_rls_rsp(multiplexer, channel->dlci, event_rls->line_status);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user