1e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/* 2e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Copyright (C) 2012-2014 The Android Open Source Project 3e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * 4e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 5e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * you may not use this file except in compliance with the License. 6e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * You may obtain a copy of the License at 7e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * 8e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * http://www.apache.org/licenses/LICENSE-2.0 9e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * 10e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Unless required by applicable law or agreed to in writing, software 11e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * distributed under the License is distributed on an "AS IS" BASIS, 12e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * See the License for the specific language governing permissions and 14e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * limitations under the License. 15e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 16e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 17e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#ifndef ANDROID_INCLUDE_BT_HF_CLIENT_H 18e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define ANDROID_INCLUDE_BT_HF_CLIENT_H 19e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 20e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta__BEGIN_DECLS 21e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 22e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 23e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CONNECTION_STATE_DISCONNECTED = 0, 24e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CONNECTION_STATE_CONNECTING, 25e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CONNECTION_STATE_CONNECTED, 26e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CONNECTION_STATE_SLC_CONNECTED, 27e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CONNECTION_STATE_DISCONNECTING 28e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_connection_state_t; 29e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 30e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 31e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_AUDIO_STATE_DISCONNECTED = 0, 32e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_AUDIO_STATE_CONNECTING, 33e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_AUDIO_STATE_CONNECTED, 34e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_AUDIO_STATE_CONNECTED_MSBC, 35e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_audio_state_t; 36e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 37e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 38e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_VR_STATE_STOPPED = 0, 39e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_VR_STATE_STARTED 40e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_vr_state_t; 41e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 42e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 43e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_VOLUME_TYPE_SPK = 0, 44e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_VOLUME_TYPE_MIC 45e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_volume_type_t; 46e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 47e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum 48e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta{ 49e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_NETWORK_STATE_NOT_AVAILABLE = 0, 50e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_NETWORK_STATE_AVAILABLE 51e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_network_state_t; 52e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 53e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum 54e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta{ 55e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_SERVICE_TYPE_HOME = 0, 56e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_SERVICE_TYPE_ROAMING 57e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_service_type_t; 58e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 59e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 60e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_ACTIVE = 0, 61e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_HELD, 62e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_DIALING, 63e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_ALERTING, 64e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_INCOMING, 65e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_WAITING, 66e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_STATE_HELD_BY_RESP_HOLD, 67e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_call_state_t; 68e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 69e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 70e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_NO_CALLS_IN_PROGRESS = 0, 71e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_CALLS_IN_PROGRESS 72e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_call_t; 73e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 74e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 75e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLSETUP_NONE = 0, 76e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLSETUP_INCOMING, 77e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLSETUP_OUTGOING, 78e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLSETUP_ALERTING 79e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 80e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_callsetup_t; 81e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 82e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 83e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLHELD_NONE = 0, 84e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLHELD_HOLD_AND_ACTIVE, 85e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALLHELD_HOLD, 86e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_callheld_t; 87e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 88e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 89e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_RESP_AND_HOLD_HELD = 0, 90e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTRH_CLIENT_RESP_AND_HOLD_ACCEPT, 91e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTRH_CLIENT_RESP_AND_HOLD_REJECT, 92e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_resp_and_hold_t; 93e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 94e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 95e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_DIRECTION_OUTGOING = 0, 96e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_DIRECTION_INCOMING 97e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_call_direction_t; 98e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 99e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 100e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_MPTY_TYPE_SINGLE = 0, 101e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_MPTY_TYPE_MULTI 102e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_call_mpty_type_t; 103e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 104e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 105e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_OK = 0, 106e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR, 107e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR_NO_CARRIER, 108e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR_BUSY, 109e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR_NO_ANSWER, 110e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR_DELAYED, 111e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR_BLACKLISTED, 112e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CMD_COMPLETE_ERROR_CME 113e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_cmd_complete_t; 114e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 115e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 116e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_0 = 0, 117e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_1, 118e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_2, 119e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_3, 120e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_4, 121e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_1x, 122e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHLD_2x, 123e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_ATA, 124e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_CHUP, 125e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_BTRH_0, 126e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_BTRH_1, 127e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_CALL_ACTION_BTRH_2, 128e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_call_action_t; 129e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 130e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 131e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_SERVICE_UNKNOWN = 0, 132e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_SERVICE_VOICE, 133e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_SERVICE_FAX 134e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_subscriber_service_type_t; 135e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 136e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef enum { 137e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_IN_BAND_RINGTONE_NOT_PROVIDED = 0, 138e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta BTHF_CLIENT_IN_BAND_RINGTONE_PROVIDED, 139e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_in_band_ring_state_t; 140e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 141e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/* Peer features masks */ 142e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_3WAY 0x00000001 /* Three-way calling */ 143e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_ECNR 0x00000002 /* Echo cancellation and/or noise reduction */ 144e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_VREC 0x00000004 /* Voice recognition */ 145e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_INBAND 0x00000008 /* In-band ring tone */ 146e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_VTAG 0x00000010 /* Attach a phone number to a voice tag */ 147e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_REJECT 0x00000020 /* Ability to reject incoming call */ 148e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_ECS 0x00000040 /* Enhanced Call Status */ 149e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_ECC 0x00000080 /* Enhanced Call Control */ 150e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_EXTERR 0x00000100 /* Extended error codes */ 151e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_PEER_FEAT_CODEC 0x00000200 /* Codec Negotiation */ 152e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 153e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/* Peer call handling features masks */ 154e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_REL 0x00000001 /* 0 Release waiting call or held calls */ 155e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_REL_ACC 0x00000002 /* 1 Release active calls and accept other 156e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta (waiting or held) cal */ 157e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_REL_X 0x00000004 /* 1x Release specified active call only */ 158e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_HOLD_ACC 0x00000008 /* 2 Active calls on hold and accept other 159e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta (waiting or held) call */ 160e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_PRIV_X 0x00000010 /* 2x Request private mode with specified 161e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta call (put the rest on hold) */ 162e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_MERGE 0x00000020 /* 3 Add held call to multiparty */ 163e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#define BTHF_CLIENT_CHLD_FEAT_MERGE_DETACH 0x00000040 /* 4 Connect two calls and leave 164e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta (disconnect from) multiparty */ 165e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 166e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for connection state change. 167e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * state will have one of the values from BtHfConnectionState 168e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * peer/chld_features are valid only for BTHF_CLIENT_CONNECTION_STATE_SLC_CONNECTED state 169e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 170e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_connection_state_callback)(bthf_client_connection_state_t state, 171e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta unsigned int peer_feat, 172e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta unsigned int chld_feat, 173e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_bdaddr_t *bd_addr); 174e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 175e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for audio connection state change. 176e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * state will have one of the values from BtHfAudioState 177e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 178e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_audio_state_callback)(bthf_client_audio_state_t state, 179e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_bdaddr_t *bd_addr); 180e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 181e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for VR connection state change. 182e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * state will have one of the values from BtHfVRState 183e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 184e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_vr_cmd_callback)(bthf_client_vr_state_t state); 185e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 186e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for network state change 187e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 188e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_network_state_callback) (bthf_client_network_state_t state); 189e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 190e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for network roaming status change 191e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 192e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_network_roaming_callback) (bthf_client_service_type_t type); 193e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 194e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for signal strength indication 195e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 196e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_network_signal_callback) (int signal_strength); 197e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 198e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for battery level indication 199e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 200e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_battery_level_callback) (int battery_level); 201e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 202e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for current operator name 203e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 204e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_current_operator_callback) (const char *name); 205e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 206e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for call indicator 207e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 208e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_call_callback) (bthf_client_call_t call); 209e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 210e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for callsetup indicator 211e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 212e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_callsetup_callback) (bthf_client_callsetup_t callsetup); 213e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 214e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for callheld indicator 215e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 216e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_callheld_callback) (bthf_client_callheld_t callheld); 217e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 218e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for response and hold 219e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 220e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_resp_and_hold_callback) (bthf_client_resp_and_hold_t resp_and_hold); 221e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 222e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for Calling Line Identification notification 223e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Will be called only when there is an incoming call and number is provided. 224e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 225e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_clip_callback) (const char *number); 226e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 227e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** 228e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Callback for Call Waiting notification 229e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 230e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_call_waiting_callback) (const char *number); 231e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 232e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** 233e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Callback for listing current calls. Can be called multiple time. 234e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * If number is unknown NULL is passed. 235e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 236e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (*bthf_client_current_calls) (int index, bthf_client_call_direction_t dir, 237e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_call_state_t state, 238e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_call_mpty_type_t mpty, 239e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta const char *number); 240e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 241e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for audio volume change 242e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 243e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (*bthf_client_volume_change_callback) (bthf_client_volume_type_t type, int volume); 244e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 245e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for command complete event 246e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * cme is valid only for BTHF_CLIENT_CMD_COMPLETE_ERROR_CME type 247e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 248e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (*bthf_client_cmd_complete_callback) (bthf_client_cmd_complete_t type, int cme); 249e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 250e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for subscriber information 251e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 252e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_subscriber_info_callback) (const char *name, 253e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_subscriber_service_type_t type); 254e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 255e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Callback for in-band ring tone settings 256e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 257e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_in_band_ring_tone_callback) (bthf_client_in_band_ring_state_t state); 258e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 259e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** 260e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Callback for requested number from AG 261e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 262e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_last_voice_tag_number_callback) (const char *number); 263e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 264e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** 265e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Callback for sending ring indication to app 266e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 267e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef void (* bthf_client_ring_indication_callback) (void); 268e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 269e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** BT-HF callback structure. */ 270e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef struct { 271e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** set to sizeof(BtHfClientCallbacks) */ 272e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta size_t size; 273e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_connection_state_callback connection_state_cb; 274e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_audio_state_callback audio_state_cb; 275e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_vr_cmd_callback vr_cmd_cb; 276e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_network_state_callback network_state_cb; 277e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_network_roaming_callback network_roaming_cb; 278e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_network_signal_callback network_signal_cb; 279e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_battery_level_callback battery_level_cb; 280e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_current_operator_callback current_operator_cb; 281e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_call_callback call_cb; 282e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_callsetup_callback callsetup_cb; 283e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_callheld_callback callheld_cb; 284e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_resp_and_hold_callback resp_and_hold_cb; 285e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_clip_callback clip_cb; 286e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_call_waiting_callback call_waiting_cb; 287e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_current_calls current_calls_cb; 288e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_volume_change_callback volume_change_cb; 289e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_cmd_complete_callback cmd_complete_cb; 290e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_subscriber_info_callback subscriber_info_cb; 291e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_in_band_ring_tone_callback in_band_ring_tone_cb; 292e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_last_voice_tag_number_callback last_voice_tag_number_callback; 293e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bthf_client_ring_indication_callback ring_indication_cb; 294e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_callbacks_t; 295e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 296e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta/** Represents the standard BT-HF interface. */ 297e7737c81e8f888a3f1960504324f282f8fae4258Hemant Guptatypedef struct { 298e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 299e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** set to sizeof(BtHfClientInterface) */ 300e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta size_t size; 301e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** 302e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * Register the BtHf callbacks 303e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 304e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*init)(bthf_client_callbacks_t* callbacks); 305e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 306e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** connect to audio gateway */ 307e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*connect)(bt_bdaddr_t *bd_addr); 308e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 309e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** disconnect from audio gateway */ 310e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*disconnect)(bt_bdaddr_t *bd_addr); 311e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 312e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** create an audio connection */ 313e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*connect_audio)(bt_bdaddr_t *bd_addr); 314e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 315e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** close the audio connection */ 316e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*disconnect_audio)(bt_bdaddr_t *bd_addr); 317e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 318e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** start voice recognition */ 319e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*start_voice_recognition)(void); 320e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 321e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** stop voice recognition */ 322e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*stop_voice_recognition)(void); 323e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 324e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** volume control */ 325e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*volume_control) (bthf_client_volume_type_t type, int volume); 326e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 327e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** place a call with number a number 328e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * if number is NULL last called number is called (aka re-dial)*/ 329e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*dial) (const char *number); 330e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 331e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** place a call with number specified by location (speed dial) */ 332e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*dial_memory) (int location); 333e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 334e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** perform specified call related action 335e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta * idx is limited only for enhanced call control related action 336e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta */ 337e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*handle_call_action) (bthf_client_call_action_t action, int idx); 338e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 339e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** query list of current calls */ 340e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*query_current_calls) (void); 341e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 342e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** query name of current selected operator */ 343e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*query_current_operator_name) (void); 344e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 345e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** Retrieve subscriber information */ 346e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*retrieve_subscriber_info) (void); 347e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 348e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** Send DTMF code*/ 349e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*send_dtmf) (char code); 350e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 351e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** Request a phone number from AG corresponding to last voice tag recorded */ 352e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*request_last_voice_tag_number) (void); 353e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 354e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** Closes the interface. */ 355e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta void (*cleanup)(void); 356e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 357e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta /** Send AT Command. */ 358e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta bt_status_t (*send_at_cmd) (int cmd, int val1, int val2, const char *arg); 359e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta} bthf_client_interface_t; 360e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 361e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta__END_DECLS 362e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta 363e7737c81e8f888a3f1960504324f282f8fae4258Hemant Gupta#endif /* ANDROID_INCLUDE_BT_HF_CLIENT_H */ 364