Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2009-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /*******************************************************************************
     20  *
     21  *  Filename:      btif_av.h
     22  *
     23  *  Description:   Main API header file for all BTIF AV functions accessed
     24  *                 from internal stack.
     25  *
     26  ******************************************************************************/
     27 
     28 #ifndef BTIF_AV_H
     29 #define BTIF_AV_H
     30 
     31 #include "bta_av_api.h"
     32 #include "btif_common.h"
     33 #include "btif_sm.h"
     34 
     35 /*******************************************************************************
     36  *  Type definitions for callback functions
     37  ******************************************************************************/
     38 
     39 typedef enum {
     40   /* Reuse BTA_AV_XXX_EVT - No need to redefine them here */
     41   BTIF_AV_CONNECT_REQ_EVT = BTA_AV_MAX_EVT,
     42   BTIF_AV_DISCONNECT_REQ_EVT,
     43   BTIF_AV_START_STREAM_REQ_EVT,
     44   BTIF_AV_STOP_STREAM_REQ_EVT,
     45   BTIF_AV_SUSPEND_STREAM_REQ_EVT,
     46   BTIF_AV_SOURCE_CONFIG_REQ_EVT,
     47   BTIF_AV_SOURCE_CONFIG_UPDATED_EVT,
     48   BTIF_AV_SINK_CONFIG_REQ_EVT,
     49   BTIF_AV_OFFLOAD_START_REQ_EVT,
     50   BTIF_AV_CLEANUP_REQ_EVT,
     51 } btif_av_sm_event_t;
     52 
     53 /*******************************************************************************
     54  *  BTIF AV API
     55  ******************************************************************************/
     56 
     57 /*******************************************************************************
     58  *
     59  * Function         btif_av_get_addr
     60  *
     61  * Description      Fetches current AV BD address
     62  *
     63  * Returns          BD address
     64  *
     65  ******************************************************************************/
     66 
     67 bt_bdaddr_t btif_av_get_addr(void);
     68 
     69 /*******************************************************************************
     70  * Function         btif_av_is_sink_enabled
     71  *
     72  * Description      Checks if A2DP Sink is enabled or not
     73  *
     74  * Returns          true if A2DP Sink is enabled, false otherwise
     75  *
     76  ******************************************************************************/
     77 
     78 bool btif_av_is_sink_enabled(void);
     79 
     80 /*******************************************************************************
     81  *
     82  * Function         btif_av_stream_ready
     83  *
     84  * Description      Checks whether AV is ready for starting a stream
     85  *
     86  * Returns          None
     87  *
     88  ******************************************************************************/
     89 
     90 bool btif_av_stream_ready(void);
     91 
     92 /*******************************************************************************
     93  *
     94  * Function         btif_av_stream_started_ready
     95  *
     96  * Description      Checks whether AV ready for media start in streaming state
     97  *
     98  * Returns          None
     99  *
    100  ******************************************************************************/
    101 
    102 bool btif_av_stream_started_ready(void);
    103 
    104 /*******************************************************************************
    105  *
    106  * Function         btif_dispatch_sm_event
    107  *
    108  * Description      Send event to AV statemachine
    109  *
    110  * Returns          None
    111  *
    112  ******************************************************************************/
    113 
    114 /* used to pass events to AV statemachine from other tasks */
    115 void btif_dispatch_sm_event(btif_av_sm_event_t event, void* p_data, int len);
    116 
    117 /*******************************************************************************
    118  *
    119  * Function         btif_av_init
    120  *
    121  * Description      Initializes btif AV if not already done
    122  *
    123  * Returns          bt_status_t
    124  *
    125  ******************************************************************************/
    126 
    127 bt_status_t btif_av_init(int service_id);
    128 
    129 /*******************************************************************************
    130  *
    131  * Function         btif_av_is_connected
    132  *
    133  * Description      Checks if av has a connected sink
    134  *
    135  * Returns          bool
    136  *
    137  ******************************************************************************/
    138 
    139 bool btif_av_is_connected(void);
    140 
    141 /*******************************************************************************
    142  *
    143  * Function         btif_av_get_peer_sep
    144  *
    145  * Description      Get the stream endpoint type.
    146  *
    147  * Returns          The stream endpoint type: either AVDT_TSEP_SRC or
    148  *                  AVDT_TSEP_SNK.
    149  *
    150  ******************************************************************************/
    151 
    152 uint8_t btif_av_get_peer_sep(void);
    153 
    154 /*******************************************************************************
    155  *
    156  * Function         btif_av_is_peer_edr
    157  *
    158  * Description      Check if the connected a2dp device supports
    159  *                  EDR or not. Only when connected this function
    160  *                  will accurately provide a true capability of
    161  *                  remote peer. If not connected it will always be false.
    162  *
    163  * Returns          true if remote device is capable of EDR
    164  *
    165  ******************************************************************************/
    166 
    167 bool btif_av_is_peer_edr(void);
    168 
    169 /******************************************************************************
    170  *
    171  * Function         btif_av_clear_remote_suspend_flag
    172  *
    173  * Description      Clears remote suspended flag
    174  *
    175  * Returns          Void
    176  ******************************************************************************/
    177 void btif_av_clear_remote_suspend_flag(void);
    178 
    179 /*******************************************************************************
    180  *
    181  * Function         btif_av_peer_supports_3mbps
    182  *
    183  * Description      Check if the connected A2DP device supports
    184  *                  3 Mbps EDR. This function will only work while connected.
    185  *                  If not connected it will always return false.
    186  *
    187  * Returns          true if remote device is EDR and supports 3 Mbps
    188  *
    189  ******************************************************************************/
    190 bool btif_av_peer_supports_3mbps(void);
    191 
    192 #endif /* BTIF_AV_H */
    193