From c29832c56570cd941d15eaa3c496800c83829408 Mon Sep 17 00:00:00 2001 From: "matthias.ringwald" <matthias.ringwald@1a0a8af8-31b5-11de-8e0c-53a27eea117e> Date: Thu, 7 Jul 2011 15:10:29 +0000 Subject: [PATCH] prepare handling of CH_EVT_READY_TO_SEND in channel state machine --- src/rfcomm.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/rfcomm.c b/src/rfcomm.c index 301c15302..ba99c8925 100644 --- a/src/rfcomm.c +++ b/src/rfcomm.c @@ -144,6 +144,7 @@ typedef enum { CH_EVT_RCVD_RPN_CMD, CH_EVT_RCVD_RPN_REQ, CH_EVT_MULTIPLEXER_READY, + CH_EVT_READY_TO_SEND, } RFCOMM_CHANNEL_EVENT; typedef struct rfcomm_channel_event { @@ -1442,7 +1443,7 @@ static void rfcomm_run(void){ for (it = (linked_item_t *) rfcomm_multiplexers; it ; it = it->next){ rfcomm_multiplexer_t * multiplexer = ((rfcomm_multiplexer_t *) it); - if (!l2cap_can_send_packet_now(multiplexer->l2cap_cid)) continue; + if (!l2cap_can_send_packet_now(multiplexer->l2cap_cid)) return; switch (multiplexer->state) { case RFCOMM_MULTIPLEXER_SEND_SABM_0: @@ -1474,8 +1475,14 @@ static void rfcomm_run(void){ rfcomm_channel_t * channel = ((rfcomm_channel_t *) it); rfcomm_multiplexer_t * multiplexer = channel->multiplexer; - if (!l2cap_can_send_packet_now(multiplexer->l2cap_cid)) continue; + if (!l2cap_can_send_packet_now(multiplexer->l2cap_cid)) return; + rfcomm_channel_event_t event; + event.type = CH_EVT_READY_TO_SEND; + rfcomm_channel_state_machine(channel, &event); + + if (!l2cap_can_send_packet_now(multiplexer->l2cap_cid)) return; + switch (channel->state){ case RFCOMM_CHANNEL_INCOMING_SETUP: