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 #include "gki.h" 19 #include "bta_api.h" 20 #include "bta_sys.h" 21 #include "bta_ag_api.h" 22 #include "bta_ag_co.h" 23 #include "bte_appl.h" 24 #include "bt_utils.h" 25 26 #define LOG_TAG "BTA_AG_CO: " 27 28 #ifndef LINUX_NATIVE 29 #include <cutils/properties.h> 30 #include <cutils/log.h> 31 #else 32 #include <stdio.h> 33 #define LOGI(format, ...) fprintf (stdout, LOG_TAG format"\n", ## __VA_ARGS__) 34 #define LOGD(format, ...) fprintf (stdout, LOG_TAG format"\n", ## __VA_ARGS__) 35 #define LOGV(format, ...) fprintf (stdout, LOG_TAG format"\n", ## __VA_ARGS__) 36 #define LOGE(format, ...) fprintf (stderr, LOG_TAG format"\n", ## __VA_ARGS__) 37 #endif 38 39 40 /************************************************************************************ 41 ** Externs 42 ************************************************************************************/ 43 extern int set_audio_state(UINT16 handle, UINT16 codec, UINT8 state, void *param); 44 45 /******************************************************************************* 46 ** 47 ** Function bta_ag_co_init 48 ** 49 ** Description This callout function is executed by AG when it is 50 ** started by calling BTA_AgEnable(). This function can be 51 ** used by the phone to initialize audio paths or for other 52 ** initialization purposes. 53 ** 54 ** 55 ** Returns Void. 56 ** 57 *******************************************************************************/ 58 void bta_ag_co_init(void) 59 { 60 BTM_WriteVoiceSettings(AG_VOICE_SETTINGS); 61 } 62 63 64 /******************************************************************************* 65 ** 66 ** Function bta_ag_co_audio_state 67 ** 68 ** Description This function is called by the AG before the audio connection 69 ** is brought up, after it comes up, and after it goes down. 70 ** 71 ** Parameters handle - handle of the AG instance 72 ** state - Audio state 73 ** BTA_AG_CO_AUD_STATE_OFF - Audio has been turned off 74 ** BTA_AG_CO_AUD_STATE_OFF_XFER - Audio has been turned off (xfer) 75 ** BTA_AG_CO_AUD_STATE_ON - Audio has been turned on 76 ** BTA_AG_CO_AUD_STATE_SETUP - Audio is about to be turned on 77 ** codec - if WBS support is compiled in, codec to going to be used is provided 78 ** and when in BTA_AG_CO_AUD_STATE_SETUP, BTM_I2SPCMConfig() must be called with 79 ** the correct platform parameters. 80 ** in the other states codec type should not be ignored 81 ** 82 ** Returns void 83 ** 84 *******************************************************************************/ 85 #if (BTM_WBS_INCLUDED == TRUE ) 86 void bta_ag_co_audio_state(UINT16 handle, UINT8 app_id, UINT8 state, tBTA_AG_PEER_CODEC codec) 87 #else 88 void bta_ag_co_audio_state(UINT16 handle, UINT8 app_id, UINT8 state) 89 #endif 90 { 91 BTIF_TRACE_DEBUG("bta_ag_co_audio_state: handle %d, state %d", handle, state); 92 switch (state) 93 { 94 case BTA_AG_CO_AUD_STATE_OFF: 95 #if (BTM_WBS_INCLUDED == TRUE ) 96 BTIF_TRACE_DEBUG("bta_ag_co_audio_state(handle %d)::Closed (OFF), codec: 0x%x", 97 handle, codec); 98 set_audio_state(handle, codec, state, NULL); 99 #else 100 BTIF_TRACE_DEBUG("bta_ag_co_audio_state(handle %d)::Closed (OFF)", 101 handle); 102 #endif 103 break; 104 case BTA_AG_CO_AUD_STATE_OFF_XFER: 105 BTIF_TRACE_DEBUG("bta_ag_co_audio_state(handle %d)::Closed (XFERRING)", handle); 106 break; 107 case BTA_AG_CO_AUD_STATE_SETUP: 108 #if (BTM_WBS_INCLUDED == TRUE ) 109 set_audio_state(handle, codec, state, NULL); 110 #else 111 set_audio_state(handle, BTA_AG_CODEC_CVSD, state, NULL); 112 #endif 113 break; 114 default: 115 break; 116 } 117 #if (BTM_WBS_INCLUDED == TRUE ) 118 APPL_TRACE_DEBUG("bta_ag_co_audio_state(handle %d, app_id: %d, state %d, codec: 0x%x)", 119 handle, app_id, state, codec); 120 #else 121 APPL_TRACE_DEBUG("bta_ag_co_audio_state(handle %d, app_id: %d, state %d)", \ 122 handle, app_id, state); 123 #endif 124 } 125 126 127 /******************************************************************************* 128 ** 129 ** Function bta_ag_co_data_open 130 ** 131 ** Description This function is executed by AG when a service level connection 132 ** is opened. The phone can use this function to set 133 ** up data paths or perform any required initialization or 134 ** set up particular to the connected service. 135 ** 136 ** 137 ** Returns void 138 ** 139 *******************************************************************************/ 140 void bta_ag_co_data_open(UINT16 handle, tBTA_SERVICE_ID service) 141 { 142 BTIF_TRACE_DEBUG("bta_ag_co_data_open handle:%d service:%d", handle, service); 143 } 144 145 /******************************************************************************* 146 ** 147 ** Function bta_ag_co_data_close 148 ** 149 ** Description This function is called by AG when a service level 150 ** connection is closed 151 ** 152 ** 153 ** Returns void 154 ** 155 *******************************************************************************/ 156 void bta_ag_co_data_close(UINT16 handle) 157 { 158 BTIF_TRACE_DEBUG("bta_ag_co_data_close handle:%d", handle); 159 } 160 161 162 /******************************************************************************* 163 ** 164 ** Function bta_ag_co_tx_write 165 ** 166 ** Description This function is called by the AG to send data to the 167 ** phone when the AG is configured for AT command pass-through. 168 ** The implementation of this function must copy the data to 169 ** the phones memory. 170 ** 171 ** Returns void 172 ** 173 *******************************************************************************/ 174 void bta_ag_co_tx_write(UINT16 handle, UINT8 * p_data, UINT16 len) 175 { 176 UNUSED(p_data); 177 BTIF_TRACE_DEBUG( "bta_ag_co_tx_write: handle: %d, len: %d", handle, len ); 178 } 179 180