1/*
2 * Copyright (C) 2021-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef BLUETOOTH_CALL_STUB_H
17#define BLUETOOTH_CALL_STUB_H
18
19#include <map>
20
21#include "iremote_object.h"
22#include "iremote_stub.h"
23
24#include "bluetooth_call_ipc_interface_code.h"
25#include "i_bluetooth_call.h"
26
27namespace OHOS {
28namespace Telephony {
29class BluetoothCallStub : public IRemoteStub<IBluetoothCall> {
30public:
31    BluetoothCallStub();
32    ~BluetoothCallStub();
33    virtual int32_t OnRemoteRequest(
34            uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override;
35
36private:
37    using BluetoothCallFunc = std::function<int32_t(MessageParcel &data, MessageParcel &reply)>;
38
39    int32_t OnAnswerCall(MessageParcel &data, MessageParcel &reply);
40    int32_t OnRejectCall(MessageParcel &data, MessageParcel &reply);
41    int32_t OnHangUpCall(MessageParcel &data, MessageParcel &reply);
42    int32_t OnGetBtCallState(MessageParcel &data, MessageParcel &reply);
43    int32_t OnHoldCall(MessageParcel &data, MessageParcel &reply);
44    int32_t OnUnHoldCall(MessageParcel &data, MessageParcel &reply);
45    int32_t OnSwitchCall(MessageParcel &data, MessageParcel &reply);
46    int32_t OnStartDtmf(MessageParcel &data, MessageParcel &reply);
47    int32_t OnStopDtmf(MessageParcel &data, MessageParcel &reply);
48    int32_t OnCombineConference(MessageParcel &data, MessageParcel &reply);
49    int32_t OnSeparateConference(MessageParcel &data, MessageParcel &reply);
50    int32_t OnKickOutFromConference(MessageParcel &data, MessageParcel &reply);
51    int32_t OnGetCurrentCallList(MessageParcel &data, MessageParcel &reply);
52    std::map<uint32_t, BluetoothCallFunc> memberFuncMap_;
53};
54} // namespace Telephony
55} // namespace OHOS
56
57#endif // BLUETOOTH_CALL_STUB_H