Skip to content

Commit

Permalink
Bluetooth: AVDTP: Connect and Disconnect API
Browse files Browse the repository at this point in the history
- Connect/Disconnect API
- L2CAP Connected/Disconnected Callback

Change-Id: I852b748adb9825541904dbb43bdb169e7125749f
Signed-off-by: Arun Jagadish <[email protected]>
arunjagadish authored and Johan Hedberg committed Oct 4, 2016
1 parent e889e2a commit 2b583ea
Showing 2 changed files with 62 additions and 9 deletions.
48 changes: 47 additions & 1 deletion net/bluetooth/avdtp.c
Original file line number Diff line number Diff line change
@@ -56,10 +56,25 @@ static struct bt_avdtp_event_cb *event_cb;
/* L2CAP Interface callbacks */
void bt_avdtp_l2cap_connected(struct bt_l2cap_chan *chan)
{
BT_DBG("");
if (!chan) {
BT_ERR("Invalid AVDTP chan");
return;
}

BT_DBG("chan %p session %p", chan, AVDTP_CHAN(chan));
}

void bt_avdtp_l2cap_disconnected(struct bt_l2cap_chan *chan)
{
if (!chan) {
BT_ERR("Invalid AVDTP chan");
return;
}

BT_DBG("chan %p session %p", chan, AVDTP_CHAN(chan));
}

void bt_avdtp_l2cap_encrypt_changed(struct bt_l2cap_chan *chan)
{
BT_DBG("");
}
@@ -69,6 +84,37 @@ void bt_avdtp_l2cap_recv(struct bt_l2cap_chan *chan, struct net_buf *buf)
BT_DBG("");
}

/*A2DP Layer interface */
int bt_avdtp_connect(struct bt_conn *conn, struct bt_avdtp *session)
{
static struct bt_l2cap_chan_ops ops = {
.connected = bt_avdtp_l2cap_connected,
.disconnected = bt_avdtp_l2cap_disconnected,
.encrypt_change = bt_avdtp_l2cap_encrypt_changed,
.recv = bt_avdtp_l2cap_recv
};

if (!session) {
return -EINVAL;
}

session->br_chan.chan.ops = &ops;

return bt_l2cap_chan_connect(conn, &session->br_chan.chan,
BT_L2CAP_PSM_AVDTP);
}

int bt_avdtp_disconnect(struct bt_avdtp *session)
{
if (!session) {
return -EINVAL;
}

BT_DBG("session %p", session);

return bt_l2cap_chan_disconnect(&session->br_chan.chan);
}

int bt_avdtp_l2cap_accept(struct bt_conn *conn, struct bt_l2cap_chan **chan)
{
int i;
23 changes: 15 additions & 8 deletions net/bluetooth/avdtp_internal.h
Original file line number Diff line number Diff line change
@@ -54,14 +54,15 @@
#define BT_AVDTP_DELAYREPORT 0x0d

/* @brief AVDTP STATE */
#define BT_AVDTP_STATE_IDLE 0x01
#define BT_AVDTP_STATE_CONFIGURED 0x02
#define BT_AVDTP_STATE_OPEN 0x03
#define BT_AVDTP_STATE_STREAMING 0x04
#define BT_AVDTP_STATE_CLOSING 0x05
#define BT_AVDTP_STATE_ABORT 0x06
#define BT_AVDTP_STATE_SIG_CONNECTED 0x07
#define BT_AVDTP_STATE_INVALID 0x00
#define BT_AVDTP_STATE_IDLE 0x01
#define BT_AVDTP_STATE_CONFIGURED 0x02
#define BT_AVDTP_STATE_OPEN 0x03
#define BT_AVDTP_STATE_STREAMING 0x04
#define BT_AVDTP_STATE_CLOSING 0x05
#define BT_AVDTP_STATE_ABORT 0x06
#define BT_AVDTP_STATE_SIG_CONNECTED 0x07
#define BT_AVDTP_STATE_SIG_DISCONNECTED 0x08
#define BT_AVDTP_STATE_INVALID 0x00

/* @brief AVDTP Media TYPE */
#define BT_AVDTP_SERVICE_CAT_MEDIA_TRANSPORT 0x01
@@ -149,3 +150,9 @@ int bt_avdtp_init(void);

/* Application register with AVDTP layer */
int bt_avdtp_register(struct bt_avdtp_event_cb *cb);

/* AVDTP connect */
int bt_avdtp_connect(struct bt_conn *conn, struct bt_avdtp *session);

/* AVDTP disconnect */
int bt_avdtp_disconnect(struct bt_avdtp *session);

0 comments on commit 2b583ea

Please sign in to comment.