195489c19Sopenharmony_ci/* 295489c19Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 395489c19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 495489c19Sopenharmony_ci * you may not use this file except in compliance with the License. 595489c19Sopenharmony_ci * You may obtain a copy of the License at 695489c19Sopenharmony_ci * 795489c19Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 895489c19Sopenharmony_ci * 995489c19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1095489c19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1195489c19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1295489c19Sopenharmony_ci * See the License for the specific language governing permissions and 1395489c19Sopenharmony_ci * limitations under the License. 1495489c19Sopenharmony_ci */ 1595489c19Sopenharmony_ci 1695489c19Sopenharmony_ci/** 1795489c19Sopenharmony_ci * @addtogroup Bluetooth 1895489c19Sopenharmony_ci * @{ 1995489c19Sopenharmony_ci * 2095489c19Sopenharmony_ci * @brief Defines a bluetooth system that provides basic blurtooth connection and profile functions, 2195489c19Sopenharmony_ci * including A2DP, AVRCP, BLE, GATT, HFP, MAP, PBAP, and SPP, etc. 2295489c19Sopenharmony_ci * 2395489c19Sopenharmony_ci * @since 6 2495489c19Sopenharmony_ci */ 2595489c19Sopenharmony_ci 2695489c19Sopenharmony_ci/** 2795489c19Sopenharmony_ci * @file bluetooth_hf_call.h 2895489c19Sopenharmony_ci * 2995489c19Sopenharmony_ci * @brief Declares HFP HandsFree Unit call data class. 3095489c19Sopenharmony_ci * 3195489c19Sopenharmony_ci * @since 6 3295489c19Sopenharmony_ci */ 3395489c19Sopenharmony_ci 3495489c19Sopenharmony_ci#ifndef BLUETOOTH_HF_CALL_H 3595489c19Sopenharmony_ci#define BLUETOOTH_HF_CALL_H 3695489c19Sopenharmony_ci 3795489c19Sopenharmony_ci#include <ctime> 3895489c19Sopenharmony_ci#include "bluetooth_host.h" 3995489c19Sopenharmony_ci#include "bluetooth_types.h" 4095489c19Sopenharmony_ci 4195489c19Sopenharmony_cinamespace OHOS { 4295489c19Sopenharmony_cinamespace Bluetooth { 4395489c19Sopenharmony_ci/** 4495489c19Sopenharmony_ci * @brief Phone call state enum. 4595489c19Sopenharmony_ci * 4695489c19Sopenharmony_ci * @since 6 4795489c19Sopenharmony_ci */ 4895489c19Sopenharmony_cienum CallState { 4995489c19Sopenharmony_ci HF_CALL_STATE_ACTIVE = 0, 5095489c19Sopenharmony_ci HF_CALL_STATE_HELD, 5195489c19Sopenharmony_ci HF_CALL_STATE_DIALING, 5295489c19Sopenharmony_ci HF_CALL_STATE_ALERTING, 5395489c19Sopenharmony_ci HF_CALL_STATE_INCOMING, 5495489c19Sopenharmony_ci HF_CALL_STATE_WAITING, 5595489c19Sopenharmony_ci HF_CALL_STATE_RESPONSE_HELD, 5695489c19Sopenharmony_ci HF_CALL_STATE_FINISHED 5795489c19Sopenharmony_ci}; 5895489c19Sopenharmony_ci 5995489c19Sopenharmony_ci/** 6095489c19Sopenharmony_ci * @brief Class for HandsFree Unit call. 6195489c19Sopenharmony_ci * 6295489c19Sopenharmony_ci * @since 6 6395489c19Sopenharmony_ci */ 6495489c19Sopenharmony_ciclass HandsFreeUnitCall { 6595489c19Sopenharmony_cipublic: 6695489c19Sopenharmony_ci /** 6795489c19Sopenharmony_ci * @brief Construct a new HandsFreeUnitCall object. 6895489c19Sopenharmony_ci * 6995489c19Sopenharmony_ci * @param device Remote device address. 7095489c19Sopenharmony_ci * @param id Call index. 7195489c19Sopenharmony_ci * @param state Call state @see HfpCallState. 7295489c19Sopenharmony_ci * @param number Call number. 7395489c19Sopenharmony_ci * @param multiParty Is multiparty flag. 7495489c19Sopenharmony_ci * @param outgoing Incoming/outing flag. 7595489c19Sopenharmony_ci * @param inBandRing Is inband-ring flag. 7695489c19Sopenharmony_ci * @since 6 7795489c19Sopenharmony_ci */ 7895489c19Sopenharmony_ci HandsFreeUnitCall( 7995489c19Sopenharmony_ci std::string device, int id, int state, std::string number, bool multiParty, bool outgoing, bool inBandRing) 8095489c19Sopenharmony_ci : device_(device), 8195489c19Sopenharmony_ci id_(id), 8295489c19Sopenharmony_ci state_(state), 8395489c19Sopenharmony_ci number_(number), 8495489c19Sopenharmony_ci multiParty_(multiParty), 8595489c19Sopenharmony_ci outgoing_(outgoing), 8695489c19Sopenharmony_ci inBandRing_(inBandRing) 8795489c19Sopenharmony_ci { 8895489c19Sopenharmony_ci uuid_ = UUID::RandomUUID(); 8995489c19Sopenharmony_ci creationTime_ = clock(); 9095489c19Sopenharmony_ci } 9195489c19Sopenharmony_ci 9295489c19Sopenharmony_ci /** 9395489c19Sopenharmony_ci * @brief Construct a new HandsFreeUnitCall object. 9495489c19Sopenharmony_ci * 9595489c19Sopenharmony_ci * @param device Remote device address. 9695489c19Sopenharmony_ci * @param id Call index. 9795489c19Sopenharmony_ci * @param state Call state @see HfpCallState. 9895489c19Sopenharmony_ci * @param number Call number. 9995489c19Sopenharmony_ci * @param uuid Call uuid. 10095489c19Sopenharmony_ci * @param multiParty Is multiparty flag. 10195489c19Sopenharmony_ci * @param outgoing Incoming/outing flag. 10295489c19Sopenharmony_ci * @param inBandRing Is inband-ring flag. 10395489c19Sopenharmony_ci * @param creationTime Call's creation time. 10495489c19Sopenharmony_ci * @since 6 10595489c19Sopenharmony_ci */ 10695489c19Sopenharmony_ci HandsFreeUnitCall(std::string device, int id, int state, std::string number, UUID uuid, bool multiParty, 10795489c19Sopenharmony_ci bool outgoing, bool inBandRing, long creationTime) 10895489c19Sopenharmony_ci : device_(device), 10995489c19Sopenharmony_ci id_(id), 11095489c19Sopenharmony_ci state_(state), 11195489c19Sopenharmony_ci number_(number), 11295489c19Sopenharmony_ci uuid_(uuid), 11395489c19Sopenharmony_ci multiParty_(multiParty), 11495489c19Sopenharmony_ci outgoing_(outgoing), 11595489c19Sopenharmony_ci inBandRing_(inBandRing), 11695489c19Sopenharmony_ci creationTime_(creationTime) 11795489c19Sopenharmony_ci {} 11895489c19Sopenharmony_ci 11995489c19Sopenharmony_ci /** 12095489c19Sopenharmony_ci * @brief Construct a new HandsFreeUnitCall object as default. 12195489c19Sopenharmony_ci * 12295489c19Sopenharmony_ci * @since 6 12395489c19Sopenharmony_ci */ 12495489c19Sopenharmony_ci HandsFreeUnitCall() = default; 12595489c19Sopenharmony_ci 12695489c19Sopenharmony_ci /** 12795489c19Sopenharmony_ci * @brief Destroy the HandsFreeUnitCall object. 12895489c19Sopenharmony_ci * 12995489c19Sopenharmony_ci * @since 6 13095489c19Sopenharmony_ci */ 13195489c19Sopenharmony_ci ~HandsFreeUnitCall() = default; 13295489c19Sopenharmony_ci 13395489c19Sopenharmony_ci /** 13495489c19Sopenharmony_ci * @brief Get the remote device address. 13595489c19Sopenharmony_ci * 13695489c19Sopenharmony_ci * @return Returns remote device address. 13795489c19Sopenharmony_ci * @since 6 13895489c19Sopenharmony_ci */ 13995489c19Sopenharmony_ci std::string GetRemoteDevice() const 14095489c19Sopenharmony_ci { 14195489c19Sopenharmony_ci return device_; 14295489c19Sopenharmony_ci } 14395489c19Sopenharmony_ci 14495489c19Sopenharmony_ci /** 14595489c19Sopenharmony_ci * @brief Get the call index. 14695489c19Sopenharmony_ci * 14795489c19Sopenharmony_ci * @return Returns the call index. 14895489c19Sopenharmony_ci * @since 6 14995489c19Sopenharmony_ci */ 15095489c19Sopenharmony_ci int GetId() const 15195489c19Sopenharmony_ci { 15295489c19Sopenharmony_ci return id_; 15395489c19Sopenharmony_ci } 15495489c19Sopenharmony_ci 15595489c19Sopenharmony_ci /** 15695489c19Sopenharmony_ci * @brief Get the uuid object. 15795489c19Sopenharmony_ci * 15895489c19Sopenharmony_ci * @return Returns the call uuid. 15995489c19Sopenharmony_ci * @since 6 16095489c19Sopenharmony_ci */ 16195489c19Sopenharmony_ci UUID GetUuid() const 16295489c19Sopenharmony_ci { 16395489c19Sopenharmony_ci return uuid_; 16495489c19Sopenharmony_ci } 16595489c19Sopenharmony_ci 16695489c19Sopenharmony_ci /** 16795489c19Sopenharmony_ci * @brief Get the call state. 16895489c19Sopenharmony_ci * 16995489c19Sopenharmony_ci * @return Returns the call state. 17095489c19Sopenharmony_ci * @since 6 17195489c19Sopenharmony_ci */ 17295489c19Sopenharmony_ci int GetState() const 17395489c19Sopenharmony_ci { 17495489c19Sopenharmony_ci return state_; 17595489c19Sopenharmony_ci } 17695489c19Sopenharmony_ci 17795489c19Sopenharmony_ci /** 17895489c19Sopenharmony_ci * @brief Get the call number. 17995489c19Sopenharmony_ci * 18095489c19Sopenharmony_ci * @return Returns the call number. 18195489c19Sopenharmony_ci * @since 6 18295489c19Sopenharmony_ci */ 18395489c19Sopenharmony_ci std::string GetNumber() const 18495489c19Sopenharmony_ci { 18595489c19Sopenharmony_ci return number_; 18695489c19Sopenharmony_ci } 18795489c19Sopenharmony_ci 18895489c19Sopenharmony_ci /** 18995489c19Sopenharmony_ci * @brief Get the call's creation time. 19095489c19Sopenharmony_ci * 19195489c19Sopenharmony_ci * @return Returns the call's creation time. 19295489c19Sopenharmony_ci * @since 6 19395489c19Sopenharmony_ci */ 19495489c19Sopenharmony_ci long GetCreationTime() const 19595489c19Sopenharmony_ci { 19695489c19Sopenharmony_ci return creationTime_; 19795489c19Sopenharmony_ci } 19895489c19Sopenharmony_ci 19995489c19Sopenharmony_ci /** 20095489c19Sopenharmony_ci * @brief Get the IsMultiParty flag. 20195489c19Sopenharmony_ci * 20295489c19Sopenharmony_ci * @return Returns the IsMultiParty flag. 20395489c19Sopenharmony_ci * @since 6 20495489c19Sopenharmony_ci */ 20595489c19Sopenharmony_ci bool IsMultiParty() const 20695489c19Sopenharmony_ci { 20795489c19Sopenharmony_ci return multiParty_; 20895489c19Sopenharmony_ci } 20995489c19Sopenharmony_ci 21095489c19Sopenharmony_ci /** 21195489c19Sopenharmony_ci * @brief Get the IsOutgoing flag. 21295489c19Sopenharmony_ci * 21395489c19Sopenharmony_ci * @return Returns the IsOutgoing flag. 21495489c19Sopenharmony_ci * @since 6 21595489c19Sopenharmony_ci */ 21695489c19Sopenharmony_ci bool IsOutgoing() const 21795489c19Sopenharmony_ci { 21895489c19Sopenharmony_ci return outgoing_; 21995489c19Sopenharmony_ci } 22095489c19Sopenharmony_ci 22195489c19Sopenharmony_ci /** 22295489c19Sopenharmony_ci * @brief Get the IsInBandRing flag. 22395489c19Sopenharmony_ci * 22495489c19Sopenharmony_ci * @return Returns the IsInBandRing flag. 22595489c19Sopenharmony_ci * @since 6 22695489c19Sopenharmony_ci */ 22795489c19Sopenharmony_ci bool IsInBandRing() const 22895489c19Sopenharmony_ci { 22995489c19Sopenharmony_ci return inBandRing_; 23095489c19Sopenharmony_ci } 23195489c19Sopenharmony_ci 23295489c19Sopenharmony_ci /** 23395489c19Sopenharmony_ci * @brief Set the call state. 23495489c19Sopenharmony_ci * 23595489c19Sopenharmony_ci * @param state Call state. 23695489c19Sopenharmony_ci * @since 6 23795489c19Sopenharmony_ci */ 23895489c19Sopenharmony_ci void SetState(int state) 23995489c19Sopenharmony_ci { 24095489c19Sopenharmony_ci state_ = state; 24195489c19Sopenharmony_ci } 24295489c19Sopenharmony_ci 24395489c19Sopenharmony_ci /** 24495489c19Sopenharmony_ci * @brief Set the call number. 24595489c19Sopenharmony_ci * 24695489c19Sopenharmony_ci * @param number Call number. 24795489c19Sopenharmony_ci * @since 6 24895489c19Sopenharmony_ci */ 24995489c19Sopenharmony_ci void SetNumber(std::string number) 25095489c19Sopenharmony_ci { 25195489c19Sopenharmony_ci number_ = number; 25295489c19Sopenharmony_ci } 25395489c19Sopenharmony_ci 25495489c19Sopenharmony_ci /** 25595489c19Sopenharmony_ci * @brief Set the multiParty flag. 25695489c19Sopenharmony_ci * 25795489c19Sopenharmony_ci * @param multiParty The multiParty flag 25895489c19Sopenharmony_ci * @since 6 25995489c19Sopenharmony_ci */ 26095489c19Sopenharmony_ci void SetMultiParty(bool multiParty) 26195489c19Sopenharmony_ci { 26295489c19Sopenharmony_ci multiParty_ = multiParty; 26395489c19Sopenharmony_ci } 26495489c19Sopenharmony_ci 26595489c19Sopenharmony_ciprotected: 26695489c19Sopenharmony_ci std::string device_ {""}; 26795489c19Sopenharmony_ci int id_ {0}; 26895489c19Sopenharmony_ci int state_ {-1}; 26995489c19Sopenharmony_ci std::string number_ {""}; 27095489c19Sopenharmony_ci UUID uuid_; 27195489c19Sopenharmony_ci bool multiParty_ {false}; 27295489c19Sopenharmony_ci bool outgoing_ {false}; 27395489c19Sopenharmony_ci bool inBandRing_ {false}; 27495489c19Sopenharmony_ci long creationTime_ {0}; 27595489c19Sopenharmony_ci}; 27695489c19Sopenharmony_ci} // namespace Bluetooth 27795489c19Sopenharmony_ci} // namespace OHOS 27895489c19Sopenharmony_ci#endif // BLUETOOTH_HF_CALL_H