rendered paste bodyIndex: avdtp.c
===================================================================
RCS file: /cvsroot/bluez/utils/audio/avdtp.c,v
retrieving revision 1.58
diff -u -3 -p -u -r1.58 avdtp.c
--- avdtp.c 25 Oct 2007 13:25:41 -0000 1.58
+++ avdtp.c 5 Nov 2007 15:07:03 -0000
@@ -308,7 +308,8 @@ struct stream_callback {
struct avdtp_stream {
int sock;
- uint16_t mtu;
+ uint16_t imtu;
+ uint16_t omtu;
struct avdtp *session;
struct avdtp_local_sep *lsep;
uint8_t rseid;
@@ -605,7 +606,7 @@ static gboolean transport_cb(GIOChannel
}
static void handle_transport_connect(struct avdtp *session, int sock,
- uint16_t mtu)
+ uint16_t imtu, uint16_t omtu)
{
struct avdtp_stream *stream = session->pending_open;
struct avdtp_local_sep *sep = stream->lsep;
@@ -629,7 +630,8 @@ static void handle_transport_connect(str
}
stream->sock = sock;
- stream->mtu = mtu;
+ stream->omtu = omtu;
+ stream->imtu = imtu;
if (!stream->open_acp && sep->cfm && sep->cfm->open)
sep->cfm->open(session, sep, stream, NULL, sep->user_data);
@@ -690,7 +692,7 @@ static void avdtp_sep_set_state(struct a
}
session->streams = g_slist_remove(session->streams, stream);
if (session->pending_open == stream)
- handle_transport_connect(session, -1, 0);
+ handle_transport_connect(session, -1, 0, 0);
if (session->req && session->req->stream == stream)
session->req->stream = NULL;
stream_free(stream);
@@ -1573,7 +1575,7 @@ static gboolean l2cap_connect_cb(GIOChan
avrcp_connect(dev);
}
else if (session->pending_open)
- handle_transport_connect(session, sk, l2o.imtu);
+ handle_transport_connect(session, sk, l2o.imtu, l2o.omtu);
else {
err = -EIO;
goto failed;
@@ -2274,7 +2276,8 @@ gboolean avdtp_stream_has_capability(str
}
gboolean avdtp_stream_get_transport(struct avdtp_stream *stream, int *sock,
- uint16_t *mtu, GSList **caps)
+ uint16_t *imtu, uint16_t *omtu,
+ GSList **caps)
{
if (stream->sock < 0)
return FALSE;
@@ -2282,8 +2285,11 @@ gboolean avdtp_stream_get_transport(stru
if (sock)
*sock = stream->sock;
- if (mtu)
- *mtu = stream->mtu;
+ if (omtu)
+ *omtu = stream->omtu;
+
+ if (imtu)
+ *imtu = stream->imtu;
if (caps)
*caps = stream->caps;
@@ -2797,7 +2803,7 @@ static gboolean avdtp_server_cb(GIOChann
session = avdtp_get_internal(&src, &dst);
if (session->pending_open && session->pending_open->open_acp) {
- handle_transport_connect(session, cli_sk, l2o.imtu);
+ handle_transport_connect(session, cli_sk, l2o.imtu, l2o.omtu);
return TRUE;
}
Index: avdtp.h
===================================================================
RCS file: /cvsroot/bluez/utils/audio/avdtp.h,v
retrieving revision 1.16
diff -u -3 -p -u -r1.16 avdtp.h
--- avdtp.h 23 Oct 2007 17:17:47 -0000 1.16
+++ avdtp.h 5 Nov 2007 15:07:03 -0000
@@ -216,7 +216,8 @@ gboolean avdtp_stream_remove_cb(struct a
unsigned int id);
gboolean avdtp_stream_get_transport(struct avdtp_stream *stream, int *sock,
- uint16_t *mtu, GSList **caps);
+ uint16_t *imtu, uint16_t *omtu,
+ GSList **caps);
gboolean avdtp_stream_has_capability(struct avdtp_stream *stream,
struct avdtp_service_capability *cap);
Index: unix.c
===================================================================
RCS file: /cvsroot/bluez/utils/audio/unix.c,v
retrieving revision 1.50
diff -u -3 -p -u -r1.50 unix.c
--- unix.c 23 Oct 2007 17:17:47 -0000 1.50
+++ unix.c 5 Nov 2007 15:07:03 -0000
@@ -305,7 +305,7 @@ static void a2dp_setup_complete(struct a
struct ipc_codec_sbc *sbc = (void *) cfg->data;
struct a2dp_data *a2dp = &client->d.a2dp;
int fd;
- uint16_t mtu;
+ uint16_t imtu, omtu;
GSList *caps;
client->req_id = 0;
@@ -321,13 +321,11 @@ static void a2dp_setup_complete(struct a
a2dp->sep = sep;
a2dp->stream = stream;
- if (!avdtp_stream_get_transport(stream, &fd, &mtu, &caps)) {
+ if (!avdtp_stream_get_transport(stream, &fd, &imtu, &omtu, &caps)) {
error("Unable to get stream transport");
goto failed;
}
- cfg->pkt_len = mtu;
-
for (codec_cap = NULL; caps; caps = g_slist_next(caps)) {
cap = caps->data;
if (cap->category == AVDTP_MEDIA_CODEC) {
@@ -342,6 +340,7 @@ static void a2dp_setup_complete(struct a
goto failed;
}
+ cfg->pkt_len = omtu;
cfg->fd_opt = CFG_FD_OPT_WRITE;
sbc_cap = (void *) codec_cap;