All pastes #762264 Raw Edit

Untitled

public text v1 · immutable
·published 2007-11-05 15:19 UTC
rendered paste body
Index: 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;