1060ff233Sopenharmony_ci/*
2060ff233Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3060ff233Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4060ff233Sopenharmony_ci * you may not use this file except in compliance with the License.
5060ff233Sopenharmony_ci * You may obtain a copy of the License at
6060ff233Sopenharmony_ci *
7060ff233Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8060ff233Sopenharmony_ci *
9060ff233Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10060ff233Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11060ff233Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12060ff233Sopenharmony_ci * See the License for the specific language governing permissions and
13060ff233Sopenharmony_ci * limitations under the License.
14060ff233Sopenharmony_ci */
15060ff233Sopenharmony_ci
16060ff233Sopenharmony_ci#ifndef BLUETOOTH_MOCK_H
17060ff233Sopenharmony_ci#define BLUETOOTH_MOCK_H
18060ff233Sopenharmony_ci
19060ff233Sopenharmony_ci#include "gmock/gmock.h"
20060ff233Sopenharmony_ci
21060ff233Sopenharmony_ci#include "c_header/ohos_bt_gap.h"
22060ff233Sopenharmony_ci#include "c_header/ohos_bt_gatt.h"
23060ff233Sopenharmony_ci#include "c_header/ohos_bt_gatt_client.h"
24060ff233Sopenharmony_ci#include "c_header/ohos_bt_gatt_server.h"
25060ff233Sopenharmony_ci
26060ff233Sopenharmony_ci#include "softbus_adapter_bt_common.h"
27060ff233Sopenharmony_ci
28060ff233Sopenharmony_ci// declare mock symbols explicitly which hava C implement, redirected to mocker when linking
29060ff233Sopenharmony_ciclass BluetoothInterface {
30060ff233Sopenharmony_cipublic:
31060ff233Sopenharmony_ci    // 蓝牙公共能力
32060ff233Sopenharmony_ci    virtual bool EnableBle() = 0;
33060ff233Sopenharmony_ci    virtual bool DisableBle() = 0;
34060ff233Sopenharmony_ci    virtual bool IsBleEnabled() = 0;
35060ff233Sopenharmony_ci    virtual bool GetLocalAddr(unsigned char *mac, unsigned int len) = 0;
36060ff233Sopenharmony_ci    virtual bool SetLocalName(unsigned char *localName, unsigned char length) = 0;
37060ff233Sopenharmony_ci    virtual int GapRegisterCallbacks(BtGapCallBacks *func) = 0;
38060ff233Sopenharmony_ci    virtual bool PairRequestReply(const BdAddr *bdAddr, int transport, bool accept) = 0;
39060ff233Sopenharmony_ci    virtual bool SetDevicePairingConfirmation(const BdAddr *bdAddr, int transport, bool accept) = 0;
40060ff233Sopenharmony_ci
41060ff233Sopenharmony_ci    // BLE广播相关
42060ff233Sopenharmony_ci    virtual int BleGattRegisterCallbacks(BtGattCallbacks *func) = 0;
43060ff233Sopenharmony_ci    virtual int BleStartScanEx(int scannerId, BleScanConfigs *configs, BleScanNativeFilter *filter,
44060ff233Sopenharmony_ci        unsigned int filterSize) = 0;
45060ff233Sopenharmony_ci    virtual int BleStopScan(int scannerId) = 0;
46060ff233Sopenharmony_ci    virtual int BleStartAdvEx(int *advId, const StartAdvRawData rawData, BleAdvParams advParam) = 0;
47060ff233Sopenharmony_ci    virtual int BleStopAdv(int advId) = 0;
48060ff233Sopenharmony_ci
49060ff233Sopenharmony_ci    // GATT Client相关
50060ff233Sopenharmony_ci    virtual int BleGattcRegister(BtUuid appUuid) = 0;
51060ff233Sopenharmony_ci    virtual int BleGattcConnect(int clientId, BtGattClientCallbacks *func, const BdAddr *bdAddr, bool isAutoConnect,
52060ff233Sopenharmony_ci        BtTransportType transport) = 0;
53060ff233Sopenharmony_ci    virtual int BleGattcDisconnect(int clientId) = 0;
54060ff233Sopenharmony_ci    virtual int BleGattcSearchServices(int clientId) = 0;
55060ff233Sopenharmony_ci    virtual bool BleGattcGetService(int clientId, BtUuid serviceUuid) = 0;
56060ff233Sopenharmony_ci    virtual int BleGattcRegisterNotification(int clientId, BtGattCharacteristic characteristic, bool enable) = 0;
57060ff233Sopenharmony_ci    virtual int BleGattcConfigureMtuSize(int clientId, int mtuSize) = 0;
58060ff233Sopenharmony_ci    virtual int BleGattcWriteCharacteristic(
59060ff233Sopenharmony_ci        int clientId, BtGattCharacteristic characteristic, BtGattWriteType writeType, int len, const char *value) = 0;
60060ff233Sopenharmony_ci    virtual int BleGattcUnRegister(int clientId) = 0;
61060ff233Sopenharmony_ci    virtual int BleGattcSetFastestConn(int clientId, bool fastestConnFlag) = 0;
62060ff233Sopenharmony_ci    virtual int BleGattcSetPriority(int clientId, const BdAddr *bdAddr, BtGattPriority priority) = 0;
63060ff233Sopenharmony_ci
64060ff233Sopenharmony_ci    // GATT Server相关
65060ff233Sopenharmony_ci    virtual int BleGattsRegisterCallbacks(BtGattServerCallbacks *func) = 0;
66060ff233Sopenharmony_ci    virtual int BleGattsRegister(BtUuid appUuid);
67060ff233Sopenharmony_ci    virtual int BleGattsAddService(int serverId, BtUuid srvcUuid, bool isPrimary, int number) = 0;
68060ff233Sopenharmony_ci    virtual int BleGattsUnRegister(int serverId);
69060ff233Sopenharmony_ci    virtual int BleGattsAddCharacteristic(
70060ff233Sopenharmony_ci        int serverId, int srvcHandle, BtUuid characUuid, int properties, int permissions) = 0;
71060ff233Sopenharmony_ci    virtual int BleGattsAddDescriptor(int serverId, int srvcHandle, BtUuid descUuid, int permissions) = 0;
72060ff233Sopenharmony_ci    virtual int BleGattsStartService(int serverId, int srvcHandle) = 0;
73060ff233Sopenharmony_ci    virtual int BleGattsStopService(int serverId, int srvcHandle) = 0;
74060ff233Sopenharmony_ci    virtual int BleGattsDeleteService(int serverId, int srvcHandle) = 0;
75060ff233Sopenharmony_ci    virtual int BleGattsDisconnect(int serverId, BdAddr bdAddr, int connId) = 0;
76060ff233Sopenharmony_ci    virtual int BleGattsSendResponse(int serverId, GattsSendRspParam *param) = 0;
77060ff233Sopenharmony_ci    virtual int BleGattsSendIndication(int serverId, GattsSendIndParam *param) = 0;
78060ff233Sopenharmony_ci};
79060ff233Sopenharmony_ci
80060ff233Sopenharmony_ciclass MockBluetooth : public BluetoothInterface {
81060ff233Sopenharmony_cipublic:
82060ff233Sopenharmony_ci    MockBluetooth();
83060ff233Sopenharmony_ci    ~MockBluetooth();
84060ff233Sopenharmony_ci
85060ff233Sopenharmony_ci    MOCK_METHOD(bool, EnableBle, (), (override));
86060ff233Sopenharmony_ci    MOCK_METHOD(bool, DisableBle, (), (override));
87060ff233Sopenharmony_ci    MOCK_METHOD(bool, IsBleEnabled, (), (override));
88060ff233Sopenharmony_ci    MOCK_METHOD(bool, GetLocalAddr, (unsigned char *mac, unsigned int len), (override));
89060ff233Sopenharmony_ci    MOCK_METHOD(bool, SetLocalName, (unsigned char *localName, unsigned char length), (override));
90060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, GapRegisterCallbacks, (BtGapCallBacks *func), (override));
91060ff233Sopenharmony_ci    MOCK_METHOD(bool, PairRequestReply, (const BdAddr *bdAddr, int transport, bool accept), (override));
92060ff233Sopenharmony_ci    MOCK_METHOD(bool, SetDevicePairingConfirmation, (const BdAddr *bdAddr, int transport, bool accept), (override));
93060ff233Sopenharmony_ci
94060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattRegisterCallbacks, (BtGattCallbacks *func), (override));
95060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleStartScanEx,
96060ff233Sopenharmony_ci        (int scannerId, BleScanConfigs * configs, BleScanNativeFilter *filter, unsigned int filterSize), (override));
97060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleStopScan, (int scannerId), (override));
98060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleStartAdvEx, (int *advId, const StartAdvRawData rawData,
99060ff233Sopenharmony_ci                BleAdvParams advParam), (override));
100060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleStopAdv, (int advId), (override));
101060ff233Sopenharmony_ci
102060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcRegister, (BtUuid appUuid), (override));
103060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcConnect,
104060ff233Sopenharmony_ci        (int clientId, BtGattClientCallbacks *func, const BdAddr *bdAddr, bool isAutoConnect,
105060ff233Sopenharmony_ci            BtTransportType transport),
106060ff233Sopenharmony_ci        (override));
107060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcDisconnect, (int clientId), (override));
108060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcSearchServices, (int clientId), (override));
109060ff233Sopenharmony_ci    MOCK_METHOD(bool, BleGattcGetService, (int clientId, BtUuid serviceUuid), (override));
110060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcRegisterNotification,
111060ff233Sopenharmony_ci                (int clientId, BtGattCharacteristic characteristic, bool enable), (override));
112060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcConfigureMtuSize, (int clientId, int mtuSize), (override));
113060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcWriteCharacteristic,
114060ff233Sopenharmony_ci        (int clientId, BtGattCharacteristic characteristic, BtGattWriteType writeType, int len, const char *value),
115060ff233Sopenharmony_ci        (override));
116060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcUnRegister, (int clientId), (override));
117060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcSetFastestConn, (int clientId, bool fastestConnFlag), (override));
118060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattcSetPriority, (int clientId, const BdAddr *bdAddr,
119060ff233Sopenharmony_ci                BtGattPriority priority), (override));
120060ff233Sopenharmony_ci
121060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsRegisterCallbacks, (BtGattServerCallbacks *func), (override));
122060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsRegister, (BtUuid appUuid), (override));
123060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsAddService, (int serverId, BtUuid srvcUuid, bool isPrimary, int number), (override));
124060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsUnRegister, (int serverId), (override));
125060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsAddCharacteristic,
126060ff233Sopenharmony_ci        (int serverId, int srvcHandle, BtUuid characUuid, int properties, int permissions), (override));
127060ff233Sopenharmony_ci    MOCK_METHOD(
128060ff233Sopenharmony_ci        int32_t, BleGattsAddDescriptor, (int serverId, int srvcHandle, BtUuid descUuid, int permissions), (override));
129060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsStartService, (int serverId, int srvcHandle), (override));
130060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsStopService, (int serverId, int srvcHandle), (override));
131060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsDeleteService, (int serverId, int srvcHandle), (override));
132060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsDisconnect, (int serverId, BdAddr bdAddr, int connId), (override));
133060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsSendResponse, (int serverId, GattsSendRspParam *param), (override));
134060ff233Sopenharmony_ci    MOCK_METHOD(int32_t, BleGattsSendIndication, (int serverId, GattsSendIndParam *param), (override));
135060ff233Sopenharmony_ci
136060ff233Sopenharmony_ci    static MockBluetooth *GetMocker();
137060ff233Sopenharmony_ci
138060ff233Sopenharmony_ci    static BtGapCallBacks *btGapCallback;
139060ff233Sopenharmony_ci    static BtGattCallbacks *btGattCallback;
140060ff233Sopenharmony_ci    static BleScanCallbacks *bleScanCallback;
141060ff233Sopenharmony_ci
142060ff233Sopenharmony_ciprivate:
143060ff233Sopenharmony_ci    static MockBluetooth *targetMocker;
144060ff233Sopenharmony_ci};
145060ff233Sopenharmony_ci
146060ff233Sopenharmony_ci#endif