update state before sending packet

This commit is contained in:
matthias.ringwald 2011-07-14 15:42:13 +00:00
parent aa3a388457
commit 2a544672af
2 changed files with 8 additions and 8 deletions

View File

@ -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;

View File

@ -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;