mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-28 16:11:24 +00:00
update state before sending packet
This commit is contained in:
parent
aa3a388457
commit
2a544672af
@ -419,16 +419,16 @@ void l2cap_run(void){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT:
|
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT:
|
||||||
l2cap_send_signaling_packet(channel->handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 0, 0);
|
|
||||||
channel->state = L2CAP_STATE_CONFIG;
|
channel->state = L2CAP_STATE_CONFIG;
|
||||||
channel->state_var |= STATE_VAR_SEND_CONF_REQ;
|
channel->state_var |= STATE_VAR_SEND_CONF_REQ;
|
||||||
|
l2cap_send_signaling_packet(channel->handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_CONNECTION_REQUEST:
|
case L2CAP_STATE_WILL_SEND_CONNECTION_REQUEST:
|
||||||
// success, start l2cap handshake
|
// success, start l2cap handshake
|
||||||
channel->local_sig_id = l2cap_next_sig_id();
|
channel->local_sig_id = l2cap_next_sig_id();
|
||||||
l2cap_send_signaling_packet( channel->handle, CONNECTION_REQUEST, channel->local_sig_id, channel->psm, channel->local_cid);
|
|
||||||
channel->state = L2CAP_STATE_WAIT_CONNECT_RSP;
|
channel->state = L2CAP_STATE_WAIT_CONNECT_RSP;
|
||||||
|
l2cap_send_signaling_packet( channel->handle, CONNECTION_REQUEST, channel->local_sig_id, channel->psm, channel->local_cid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_CONFIG:
|
case L2CAP_STATE_CONFIG:
|
||||||
@ -460,8 +460,8 @@ void l2cap_run(void){
|
|||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_DISCONNECT_REQUEST:
|
case L2CAP_STATE_WILL_SEND_DISCONNECT_REQUEST:
|
||||||
channel->local_sig_id = l2cap_next_sig_id();
|
channel->local_sig_id = l2cap_next_sig_id();
|
||||||
l2cap_send_signaling_packet( channel->handle, DISCONNECTION_REQUEST, channel->local_sig_id, channel->remote_cid, channel->local_cid);
|
|
||||||
channel->state = L2CAP_STATE_WAIT_DISCONNECT;
|
channel->state = L2CAP_STATE_WAIT_DISCONNECT;
|
||||||
|
l2cap_send_signaling_packet( channel->handle, DISCONNECTION_REQUEST, channel->local_sig_id, channel->remote_cid, channel->local_cid);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
10
src/rfcomm.c
10
src/rfcomm.c
@ -1381,18 +1381,18 @@ static void rfcomm_channel_state_machine(rfcomm_channel_t *channel, rfcomm_chann
|
|||||||
// (Although the handling of individual settings are implementation-dependent.)"
|
// (Although the handling of individual settings are implementation-dependent.)"
|
||||||
//
|
//
|
||||||
|
|
||||||
// TODO: integrate in common swich
|
// TODO: integrate in common switch
|
||||||
if (event->type == CH_EVT_RCVD_RPN_CMD){
|
if (event->type == CH_EVT_RCVD_RPN_CMD){
|
||||||
|
|
||||||
rfcomm_channel_event_rpn_t *event_rpn = (rfcomm_channel_event_rpn_t*) event;
|
|
||||||
// control port parameters
|
// control port parameters
|
||||||
|
rfcomm_channel_event_rpn_t *event_rpn = (rfcomm_channel_event_rpn_t*) event;
|
||||||
log_dbg("Received Remote Port Negotiation for #%u\n", channel->dlci);
|
log_dbg("Received Remote Port Negotiation for #%u\n", channel->dlci);
|
||||||
memcpy(&channel->rpn_data, &event_rpn->data, sizeof(rfcomm_rpn_data_t));
|
memcpy(&channel->rpn_data, &event_rpn->data, sizeof(rfcomm_rpn_data_t));
|
||||||
channel->state_var |= STATE_VAR_SEND_RPN_RSP;
|
channel->state_var |= STATE_VAR_SEND_RPN_RSP;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: integrate in common swich
|
// TODO: integrate in common switch
|
||||||
if (event->type == CH_EVT_RCVD_RPN_REQ){
|
if (event->type == CH_EVT_RCVD_RPN_REQ){
|
||||||
|
|
||||||
log_dbg("Received Remote Port Negotiation (Info) for #%u\n", channel->dlci);
|
log_dbg("Received Remote Port Negotiation (Info) for #%u\n", channel->dlci);
|
||||||
@ -1429,16 +1429,16 @@ static void rfcomm_channel_state_machine(rfcomm_channel_t *channel, rfcomm_chann
|
|||||||
switch (event->type){
|
switch (event->type){
|
||||||
case CH_EVT_RCVD_SABM:
|
case CH_EVT_RCVD_SABM:
|
||||||
log_dbg("-> Inform app\n");
|
log_dbg("-> Inform app\n");
|
||||||
rfcomm_emit_connection_request(channel);
|
|
||||||
channel->state_var |= STATE_VAR_RCVD_SABM;
|
channel->state_var |= STATE_VAR_RCVD_SABM;
|
||||||
channel->state = RFCOMM_CHANNEL_INCOMING_SETUP;
|
channel->state = RFCOMM_CHANNEL_INCOMING_SETUP;
|
||||||
|
rfcomm_emit_connection_request(channel);
|
||||||
break;
|
break;
|
||||||
case CH_EVT_RCVD_PN:
|
case CH_EVT_RCVD_PN:
|
||||||
rfcomm_channel_accept_pn(channel, event_pn);
|
rfcomm_channel_accept_pn(channel, event_pn);
|
||||||
log_dbg("-> Inform app\n");
|
log_dbg("-> Inform app\n");
|
||||||
rfcomm_emit_connection_request(channel);
|
|
||||||
channel->state_var |= STATE_VAR_RCVD_PN;
|
channel->state_var |= STATE_VAR_RCVD_PN;
|
||||||
channel->state = RFCOMM_CHANNEL_INCOMING_SETUP;
|
channel->state = RFCOMM_CHANNEL_INCOMING_SETUP;
|
||||||
|
rfcomm_emit_connection_request(channel);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user