Return-Path: From: Andrei Emeltchenko To: linux-bluetooth@vger.kernel.org Subject: [PATCHv2 3/9] android/health: Add handling MDL connection request Date: Fri, 27 Jun 2014 10:39:57 +0300 Message-Id: <1403854803-28850-3-git-send-email-Andrei.Emeltchenko.news@gmail.com> In-Reply-To: <1403854803-28850-1-git-send-email-Andrei.Emeltchenko.news@gmail.com> References: <1403784265-1455-1-git-send-email-Andrei.Emeltchenko.news@gmail.com> <1403854803-28850-1-git-send-email-Andrei.Emeltchenko.news@gmail.com> Sender: linux-bluetooth-owner@vger.kernel.org List-ID: From: Andrei Emeltchenko --- android/health.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/android/health.c b/android/health.c index 140afee..3cb2016 100644 --- a/android/health.c +++ b/android/health.c @@ -1101,7 +1101,38 @@ static void mcap_mdl_aborted_cb(struct mcap_mdl *mdl, void *data) static uint8_t mcap_mdl_conn_req_cb(struct mcap_mcl *mcl, uint8_t mdepid, uint16_t mdlid, uint8_t *conf, void *data) { - DBG("Not Implemeneted"); + GError *gerr = NULL; + + DBG("Data channel request: mdepid %u mdlid %u", mdepid, mdlid); + + /* TODO: find / create device */ + + if (mdepid == HDP_MDEP_ECHO) { + switch (*conf) { + case HDP_NO_PREFERENCE_DC: + *conf = HDP_RELIABLE_DC; + case HDP_RELIABLE_DC: + break; + case HDP_STREAMING_DC: + return MCAP_CONFIGURATION_REJECTED; + default: + /* Special case defined in HDP spec 3.4. When an invalid + * configuration is received we shall close the MCL when + * we are still processing the callback. */ + /* TODO close device */ + return MCAP_CONFIGURATION_REJECTED; /* not processed */ + } + + if (!mcap_set_data_chan_mode(mcap, L2CAP_MODE_ERTM, &gerr)) { + error("Error: %s", gerr->message); + g_error_free(gerr); + return MCAP_MDL_BUSY; + } + + /* TODO: Create channel */ + + return MCAP_SUCCESS; + } return MCAP_SUCCESS; } -- 1.8.3.2