/* * Copyright 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include "bt_hf.h" namespace bluetooth { namespace headset { /** * Headset related callbacks invoked from from the Bluetooth native stack * All callbacks are invoked on the JNI thread */ class Callbacks { public: virtual ~Callbacks() = default; /** * Callback for connection state change. * * @param state one of the values from bthf_connection_state_t * @param bd_addr remote device address */ virtual void ConnectionStateCallback(bthf_connection_state_t state, RawAddress* bd_addr) = 0; /** * Callback for audio connection state change. * * @param state one of the values from bthf_audio_state_t * @param bd_addr remote device address */ virtual void AudioStateCallback(bthf_audio_state_t state, RawAddress* bd_addr) = 0; /** * Callback for VR connection state change. * * @param state one of the values from bthf_vr_state_t * @param bd_addr */ virtual void VoiceRecognitionCallback(bthf_vr_state_t state, RawAddress* bd_addr) = 0; /** * Callback for answer incoming call (ATA) * * @param bd_addr remote device address */ virtual void AnswerCallCallback(RawAddress* bd_addr) = 0; /** * Callback for disconnect call (AT+CHUP) * * @param bd_addr remote device address */ virtual void HangupCallCallback(RawAddress* bd_addr) = 0; /** * Callback for disconnect call (AT+CHUP) * * @param type denote Speaker/Mic gain bthf_volume_type_t * @param volume volume value 0 to 15, p69, HFP 1.7.1 spec * @param bd_addr remote device address */ virtual void VolumeControlCallback(bthf_volume_type_t type, int volume, RawAddress* bd_addr) = 0; /** * Callback for dialing an outgoing call * * @param number intended phone number, if number is NULL, redial * @param bd_addr remote device address */ virtual void DialCallCallback(char* number, RawAddress* bd_addr) = 0; /** * Callback for sending DTMF tones * * @param tone contains the dtmf character to be sent * @param bd_addr remote device address */ virtual void DtmfCmdCallback(char tone, RawAddress* bd_addr) = 0; /** * Callback for enabling/disabling noise reduction/echo cancellation * * @param nrec 1 to enable, 0 to disable * @param bd_addr remote device address */ virtual void NoiseReductionCallback(bthf_nrec_t nrec, RawAddress* bd_addr) = 0; /** * Callback for AT+BCS and event from BAC * * @param wbs WBS enable, WBS disable * @param bd_addr remote device address */ virtual void WbsCallback(bthf_wbs_config_t wbs, RawAddress* bd_addr) = 0; /** * Callback for call hold handling (AT+CHLD) * * @param chld the call hold command (0, 1, 2, 3) * @param bd_addr remote device address */ virtual void AtChldCallback(bthf_chld_type_t chld, RawAddress* bd_addr) = 0; /** * Callback for CNUM (subscriber number) * * @param bd_addr remote device address */ virtual void AtCnumCallback(RawAddress* bd_addr) = 0; /** * Callback for indicators (CIND) * * @param bd_addr remote device address */ virtual void AtCindCallback(RawAddress* bd_addr) = 0; /** * Callback for operator selection (COPS) * * @param bd_addr remote device address */ virtual void AtCopsCallback(RawAddress* bd_addr) = 0; /** * Callback for call list (AT+CLCC) * * @param bd_addr remote device address */ virtual void AtClccCallback(RawAddress* bd_addr) = 0; /** * Callback for unknown AT command recd from HF * * @param at_string he unparsed AT string * @param bd_addr remote device address */ virtual void UnknownAtCallback(char* at_string, RawAddress* bd_addr) = 0; /** * Callback for keypressed (HSP) event. * * @param bd_addr remote device address */ virtual void KeyPressedCallback(RawAddress* bd_addr) = 0; /** * Callback for BIND. Pass the remote HF Indicators supported. * * @param at_string unparsed AT command string * @param bd_addr remote device address */ virtual void AtBindCallback(char* at_string, RawAddress* bd_addr) = 0; /** * Callback for BIEV. Pass the change in the Remote HF indicator values * * @param ind_id HF indicator id * @param ind_value HF indicator value * @param bd_addr remote device address */ virtual void AtBievCallback(bthf_hf_ind_type_t ind_id, int ind_value, RawAddress* bd_addr) = 0; /** * Callback for BIA. Pass the change in AG indicator activation. * NOTE: Call, Call Setup and Call Held indicators are mandatory and cannot * be disabled. Thus, they are not included here. * * @param service whether HF should receive network service state update * @param roam whether HF should receive roaming state update * @param signal whether HF should receive signal strength update * @param battery whether HF should receive AG battery level update * @param bd_addr remote HF device address */ virtual void AtBiaCallback(bool service, bool roam, bool signal, bool battery, RawAddress* bd_addr) = 0; }; } // namespace headset } // namespace bluetooth