1e1c44949Sopenharmony_ci/* 2e1c44949Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 3e1c44949Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e1c44949Sopenharmony_ci * you may not use this file except in compliance with the License. 5e1c44949Sopenharmony_ci * You may obtain a copy of the License at 6e1c44949Sopenharmony_ci * 7e1c44949Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e1c44949Sopenharmony_ci * 9e1c44949Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e1c44949Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e1c44949Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e1c44949Sopenharmony_ci * See the License for the specific language governing permissions and 13e1c44949Sopenharmony_ci * limitations under the License. 14e1c44949Sopenharmony_ci */ 15e1c44949Sopenharmony_ci 16e1c44949Sopenharmony_ci#ifndef BLUETOOTH_CALL_CLIENT_H 17e1c44949Sopenharmony_ci#define BLUETOOTH_CALL_CLIENT_H 18e1c44949Sopenharmony_ci 19e1c44949Sopenharmony_ci#include "singleton.h" 20e1c44949Sopenharmony_ci#include "pac_map.h" 21e1c44949Sopenharmony_ci 22e1c44949Sopenharmony_ci#include "call_manager_callback.h" 23e1c44949Sopenharmony_ci 24e1c44949Sopenharmony_cinamespace OHOS { 25e1c44949Sopenharmony_cinamespace Telephony { 26e1c44949Sopenharmony_ciclass BluetoothCallClient : public DelayedRefSingleton<BluetoothCallClient> { 27e1c44949Sopenharmony_ci DECLARE_DELAYED_REF_SINGLETON(BluetoothCallClient) 28e1c44949Sopenharmony_cipublic: 29e1c44949Sopenharmony_ci void Init(); 30e1c44949Sopenharmony_ci void UnInit(); 31e1c44949Sopenharmony_ci 32e1c44949Sopenharmony_ci /** 33e1c44949Sopenharmony_ci * @brief Register callback 34e1c44949Sopenharmony_ci * 35e1c44949Sopenharmony_ci * @param callback[in], callback function pointer 36e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 37e1c44949Sopenharmony_ci */ 38e1c44949Sopenharmony_ci int32_t RegisterCallBack(std::unique_ptr<CallManagerCallback> callback); 39e1c44949Sopenharmony_ci 40e1c44949Sopenharmony_ci /** 41e1c44949Sopenharmony_ci * @brief unregister callback 42e1c44949Sopenharmony_ci * 43e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 44e1c44949Sopenharmony_ci */ 45e1c44949Sopenharmony_ci int32_t UnRegisterCallBack(); 46e1c44949Sopenharmony_ci 47e1c44949Sopenharmony_ci /** 48e1c44949Sopenharmony_ci * @brief Make a phone call 49e1c44949Sopenharmony_ci * 50e1c44949Sopenharmony_ci * @param number[in], dial param. 51e1c44949Sopenharmony_ci * @param extras[in], extras date. 52e1c44949Sopenharmony_ci * @return Returns callId when the value is greater than zero, others on failure. 53e1c44949Sopenharmony_ci */ 54e1c44949Sopenharmony_ci int32_t DialCall(std::u16string number, AppExecFwk::PacMap &extras); 55e1c44949Sopenharmony_ci 56e1c44949Sopenharmony_ci /** 57e1c44949Sopenharmony_ci * @brief Answer a phone call 58e1c44949Sopenharmony_ci * 59e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 60e1c44949Sopenharmony_ci */ 61e1c44949Sopenharmony_ci int32_t AnswerCall(); 62e1c44949Sopenharmony_ci 63e1c44949Sopenharmony_ci /** 64e1c44949Sopenharmony_ci * @brief Reject a phone call 65e1c44949Sopenharmony_ci * 66e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 67e1c44949Sopenharmony_ci */ 68e1c44949Sopenharmony_ci int32_t RejectCall(); 69e1c44949Sopenharmony_ci 70e1c44949Sopenharmony_ci /** 71e1c44949Sopenharmony_ci * @brief Hang up the phone 72e1c44949Sopenharmony_ci * 73e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 74e1c44949Sopenharmony_ci */ 75e1c44949Sopenharmony_ci int32_t HangUpCall(); 76e1c44949Sopenharmony_ci 77e1c44949Sopenharmony_ci /** 78e1c44949Sopenharmony_ci * @brief Obtain the call status of the device 79e1c44949Sopenharmony_ci * 80e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 81e1c44949Sopenharmony_ci */ 82e1c44949Sopenharmony_ci int32_t GetCallState(); 83e1c44949Sopenharmony_ci 84e1c44949Sopenharmony_ci /** 85e1c44949Sopenharmony_ci * @brief Park a phone call 86e1c44949Sopenharmony_ci * 87e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 88e1c44949Sopenharmony_ci */ 89e1c44949Sopenharmony_ci int32_t HoldCall(); 90e1c44949Sopenharmony_ci 91e1c44949Sopenharmony_ci /** 92e1c44949Sopenharmony_ci * @brief Activate a phone call 93e1c44949Sopenharmony_ci * 94e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 95e1c44949Sopenharmony_ci */ 96e1c44949Sopenharmony_ci int32_t UnHoldCall(); 97e1c44949Sopenharmony_ci 98e1c44949Sopenharmony_ci /** 99e1c44949Sopenharmony_ci * @brief Switch the phone 100e1c44949Sopenharmony_ci * 101e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 102e1c44949Sopenharmony_ci */ 103e1c44949Sopenharmony_ci int32_t SwitchCall(); 104e1c44949Sopenharmony_ci 105e1c44949Sopenharmony_ci /** 106e1c44949Sopenharmony_ci * @brief Merge calls to form a conference 107e1c44949Sopenharmony_ci * 108e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 109e1c44949Sopenharmony_ci */ 110e1c44949Sopenharmony_ci int32_t CombineConference(); 111e1c44949Sopenharmony_ci 112e1c44949Sopenharmony_ci /** 113e1c44949Sopenharmony_ci * @brief Separates a specified call from a conference call 114e1c44949Sopenharmony_ci * 115e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 116e1c44949Sopenharmony_ci */ 117e1c44949Sopenharmony_ci int32_t SeparateConference(); 118e1c44949Sopenharmony_ci 119e1c44949Sopenharmony_ci /** 120e1c44949Sopenharmony_ci * @brief Kick out a specified call from a conference call 121e1c44949Sopenharmony_ci * 122e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 123e1c44949Sopenharmony_ci */ 124e1c44949Sopenharmony_ci int32_t KickOutFromConference(); 125e1c44949Sopenharmony_ci 126e1c44949Sopenharmony_ci /** 127e1c44949Sopenharmony_ci * @brief Enable and send DTMF 128e1c44949Sopenharmony_ci * 129e1c44949Sopenharmony_ci * @param str[in], Characters sent 130e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 131e1c44949Sopenharmony_ci */ 132e1c44949Sopenharmony_ci int32_t StartDtmf(char str); 133e1c44949Sopenharmony_ci 134e1c44949Sopenharmony_ci /** 135e1c44949Sopenharmony_ci * @brief Stop the DTMF 136e1c44949Sopenharmony_ci * 137e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 138e1c44949Sopenharmony_ci */ 139e1c44949Sopenharmony_ci int32_t StopDtmf(); 140e1c44949Sopenharmony_ci 141e1c44949Sopenharmony_ci /** 142e1c44949Sopenharmony_ci * @brief Whether the ringing 143e1c44949Sopenharmony_ci * 144e1c44949Sopenharmony_ci * @param enabled[out], true on ringing, false on there is no ringing 145e1c44949Sopenharmony_ci * @return Returns interface processing results. 146e1c44949Sopenharmony_ci */ 147e1c44949Sopenharmony_ci int32_t IsRinging(bool &enabled); 148e1c44949Sopenharmony_ci 149e1c44949Sopenharmony_ci /** 150e1c44949Sopenharmony_ci * @brief Is there Call 151e1c44949Sopenharmony_ci * 152e1c44949Sopenharmony_ci * @return Returns true on has call, others on there is no call. 153e1c44949Sopenharmony_ci */ 154e1c44949Sopenharmony_ci bool HasCall(); 155e1c44949Sopenharmony_ci 156e1c44949Sopenharmony_ci /** 157e1c44949Sopenharmony_ci * @brief Checks whether a new call is allowed. 158e1c44949Sopenharmony_ci * 159e1c44949Sopenharmony_ci * @param enabled[out], whether allow new calls 160e1c44949Sopenharmony_ci * @return Returns interface processing results. 161e1c44949Sopenharmony_ci */ 162e1c44949Sopenharmony_ci int32_t IsNewCallAllowed(bool &enabled); 163e1c44949Sopenharmony_ci 164e1c44949Sopenharmony_ci /** 165e1c44949Sopenharmony_ci * @brief Is there an emergency call 166e1c44949Sopenharmony_ci * 167e1c44949Sopenharmony_ci * @param enabled[out], true on emergency call, false on no emergency call 168e1c44949Sopenharmony_ci * @return Returns interface processing results. 169e1c44949Sopenharmony_ci */ 170e1c44949Sopenharmony_ci int32_t IsInEmergencyCall(bool &enabled); 171e1c44949Sopenharmony_ci 172e1c44949Sopenharmony_ci /** 173e1c44949Sopenharmony_ci * @brief Mute the Microphone 174e1c44949Sopenharmony_ci * 175e1c44949Sopenharmony_ci * @param isMute[in], mute state 176e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 177e1c44949Sopenharmony_ci */ 178e1c44949Sopenharmony_ci int32_t SetMuted(bool isMute); 179e1c44949Sopenharmony_ci 180e1c44949Sopenharmony_ci /** 181e1c44949Sopenharmony_ci * @brief Call mute 182e1c44949Sopenharmony_ci * 183e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 184e1c44949Sopenharmony_ci */ 185e1c44949Sopenharmony_ci int32_t MuteRinger(); 186e1c44949Sopenharmony_ci 187e1c44949Sopenharmony_ci /** 188e1c44949Sopenharmony_ci * @brief Setting the Audio Channel 189e1c44949Sopenharmony_ci * 190e1c44949Sopenharmony_ci * @param deviceType[in], audioDeviceType 191e1c44949Sopenharmony_ci * @param bluetoothAddress[in], audio device address 192e1c44949Sopenharmony_ci * @return Returns 0 on success, others on failure. 193e1c44949Sopenharmony_ci */ 194e1c44949Sopenharmony_ci int32_t SetAudioDevice(AudioDeviceType deviceType, const std::string &bluetoothAddress); 195e1c44949Sopenharmony_ci 196e1c44949Sopenharmony_ci /** 197e1c44949Sopenharmony_ci * @brief Get current call list 198e1c44949Sopenharmony_ci * 199e1c44949Sopenharmony_ci * @param slotId[in], The slot id 200e1c44949Sopenharmony_ci * @return Returns call info list. 201e1c44949Sopenharmony_ci */ 202e1c44949Sopenharmony_ci std::vector<CallAttributeInfo> GetCurrentCallList(int32_t slotId); 203e1c44949Sopenharmony_ciprivate: 204e1c44949Sopenharmony_ci std::mutex mutex_; 205e1c44949Sopenharmony_ci}; 206e1c44949Sopenharmony_ci} // namespace Telephony 207e1c44949Sopenharmony_ci} // namespace OHOS 208e1c44949Sopenharmony_ci 209e1c44949Sopenharmony_ci#endif