Home | History | Annotate | Download | only in mce
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2014 The Android Open Source Project
      4  *  Copyright (C) 2003-2012 Broadcom Corporation
      5  *
      6  *  Licensed under the Apache License, Version 2.0 (the "License");
      7  *  you may not use this file except in compliance with the License.
      8  *  You may obtain a copy of the License at:
      9  *
     10  *  http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  *  Unless required by applicable law or agreed to in writing, software
     13  *  distributed under the License is distributed on an "AS IS" BASIS,
     14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  *  See the License for the specific language governing permissions and
     16  *  limitations under the License.
     17  *
     18  ******************************************************************************/
     19 
     20 /******************************************************************************
     21  *
     22  *  This is the implementation of the API for MCE subsystem
     23  *
     24  ******************************************************************************/
     25 
     26 #include "bta_api.h"
     27 #include "bd.h"
     28 #include "bta_sys.h"
     29 #include "bta_mce_api.h"
     30 #include "bta_mce_int.h"
     31 #include "gki.h"
     32 #include <string.h>
     33 #include "port_api.h"
     34 #include "sdp_api.h"
     35 
     36 /*****************************************************************************
     37 **  Constants
     38 *****************************************************************************/
     39 
     40 static const tBTA_SYS_REG bta_mce_reg =
     41 {
     42     bta_mce_sm_execute,
     43     NULL
     44 };
     45 
     46 /*******************************************************************************
     47 **
     48 ** Function         BTA_MceEnable
     49 **
     50 ** Description      Enable the MCE I/F service. When the enable
     51 **                  operation is complete the callback function will be
     52 **                  called with a BTA_MCE_ENABLE_EVT. This function must
     53 **                  be called before other functions in the MCE API are
     54 **                  called.
     55 **
     56 ** Returns          BTA_MCE_SUCCESS if successful.
     57 **                  BTA_MCE_FAIL if internal failure.
     58 **
     59 *******************************************************************************/
     60 tBTA_MCE_STATUS BTA_MceEnable(tBTA_MCE_DM_CBACK *p_cback)
     61 {
     62     tBTA_MCE_STATUS status = BTA_MCE_FAILURE;
     63     tBTA_MCE_API_ENABLE  *p_buf;
     64 
     65     APPL_TRACE_API(__FUNCTION__);
     66     if(p_cback && FALSE == bta_sys_is_register(BTA_ID_MCE))
     67     {
     68         memset(&bta_mce_cb, 0, sizeof(tBTA_MCE_CB));
     69 
     70         /* register with BTA system manager */
     71         bta_sys_register(BTA_ID_MCE, &bta_mce_reg);
     72 
     73         if (p_cback && (p_buf = (tBTA_MCE_API_ENABLE *) GKI_getbuf(sizeof(tBTA_MCE_API_ENABLE))) != NULL)
     74         {
     75             p_buf->hdr.event = BTA_MCE_API_ENABLE_EVT;
     76             p_buf->p_cback = p_cback;
     77             bta_sys_sendmsg(p_buf);
     78             status = BTA_MCE_SUCCESS;
     79         }
     80     }
     81     return(status);
     82 }
     83 
     84 /*******************************************************************************
     85 **
     86 ** Function         BTA_MceGetRemoteMasInstances
     87 **
     88 ** Description      This function performs service discovery for the MAS service
     89 **                  by the given peer device. When the operation is completed
     90 **                  the tBTA_MCE_DM_CBACK callback function will be  called with
     91 **                  a BTA_MCE_MAS_DISCOVERY_COMP_EVT.
     92 **
     93 ** Returns          BTA_MCE_SUCCESS, if the request is being processed.
     94 **                  BTA_MCE_FAILURE, otherwise.
     95 **
     96 *******************************************************************************/
     97 tBTA_MCE_STATUS BTA_MceGetRemoteMasInstances(BD_ADDR bd_addr)
     98 {
     99     tBTA_MCE_STATUS ret = BTA_MCE_FAILURE;
    100     tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES *p_msg;
    101 
    102     APPL_TRACE_API(__FUNCTION__);
    103     if ((p_msg = (tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES *)GKI_getbuf(sizeof(tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES))) != NULL)
    104     {
    105         p_msg->hdr.event = BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT;
    106         bdcpy(p_msg->bd_addr, bd_addr);
    107         bta_sys_sendmsg(p_msg);
    108         ret = BTA_MCE_SUCCESS;
    109     }
    110 
    111     return(ret);
    112 }
    113