From 0feca7d685c7126958eaa9dcf43c71c21a02bb09 Mon Sep 17 00:00:00 2001 From: Oliver Ruiz Dorantes Date: Fri, 2 Apr 2010 11:42:00 +0000 Subject: [PATCH] - Prepending l2cap header in a separate function to not play with c++ contexts git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36026 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../network/protocols/l2cap/l2cap_lower.cpp | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/src/add-ons/kernel/network/protocols/l2cap/l2cap_lower.cpp b/src/add-ons/kernel/network/protocols/l2cap/l2cap_lower.cpp index 3178820a51..941dd8ef36 100644 --- a/src/add-ons/kernel/network/protocols/l2cap/l2cap_lower.cpp +++ b/src/add-ons/kernel/network/protocols/l2cap/l2cap_lower.cpp @@ -101,6 +101,33 @@ struct bt_hci_module_info* btDevices = NULL; static thread_id sConnectionThread; +static void +AddL2capHeader(L2capFrame* frame) +{ + NetBufferPrepend bufferHeader(frame->buffer); + status_t status = bufferHeader.Status(); + + if (status < B_OK) { + debugf("header could not be prepended! code=%d\n", frame->code); + return; + } + + // fill + bufferHeader->length = htole16(frame->buffer->size - sizeof(l2cap_hdr_t)); + switch (frame->type) { + case L2CAP_C_FRAME: + bufferHeader->dcid = L2CAP_SIGNAL_CID; + break; + case L2CAP_G_FRAME: + bufferHeader->dcid = L2CAP_CLT_CID; + break; + default: + bufferHeader->dcid = frame->channel->dcid; + break; + } +} + + void purge_connection(HciConnection* conn) { @@ -130,30 +157,7 @@ purge_connection(HciConnection* conn) if (frame->buffer == NULL) panic("Malformed frame in ongoing queue"); - { - NetBufferPrepend bufferHeader(frame->buffer); - status_t status = bufferHeader.Status(); - if (status < B_OK) { - debugf("header could not be prepended! code=%d\n", frame->code); - return; - - } - - // fill - bufferHeader->length = htole16(frame->buffer->size - sizeof(l2cap_hdr_t)); - switch (frame->type) { - case L2CAP_C_FRAME: - bufferHeader->dcid = L2CAP_SIGNAL_CID; - break; - case L2CAP_G_FRAME: - bufferHeader->dcid = L2CAP_CLT_CID; - break; - default: - bufferHeader->dcid = frame->channel->dcid; - break; - - } - } + AddL2capHeader(frame); if (btDevices == NULL) if (get_module(BT_HCI_MODULE_NAME, (module_info**)&btDevices) != B_OK) {