• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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_MOCK_H
17 #define BLUETOOTH_MOCK_H
18 
19 #include "gmock/gmock.h"
20 
21 #include "c_header/ohos_bt_gap.h"
22 #include "c_header/ohos_bt_gatt.h"
23 #include "c_header/ohos_bt_gatt_client.h"
24 #include "c_header/ohos_bt_gatt_server.h"
25 #include "softbus_adapter_bt_common.h"
26 #include "softbus_broadcast_adapter_interface.h"
27 
28 // declare mock symbols explicitly which hava C implement, redirected to mocker when linking
29 class BluetoothInterface {
30 public:
31     // 蓝牙公共能力
32     virtual bool EnableBle() = 0;
33     virtual bool DisableBle() = 0;
34     virtual bool IsBleEnabled() = 0;
35     virtual bool IsLpDeviceAvailable() = 0;
36     virtual bool GetLocalAddr(unsigned char *mac, unsigned int len) = 0;
37     virtual bool SetLocalName(unsigned char *localName, unsigned char length) = 0;
38     virtual int32_t GapRegisterCallbacks(BtGapCallBacks *func) = 0;
39     virtual bool PairRequestReply(const BdAddr *bdAddr, int32_t transport, bool accept) = 0;
40     virtual bool SetDevicePairingConfirmation(const BdAddr *bdAddr, int32_t transport, bool accept) = 0;
41 
42     // BLE广播相关
43     virtual int32_t BleGattRegisterCallbacks(BtGattCallbacks *func) = 0;
44     virtual int32_t BleRegisterScanCallbacks(BleScanCallbacks *func, int32_t *scannerId) = 0;
45     virtual int32_t BleDeregisterScanCallbacks(int32_t scannerId) = 0;
46     virtual int32_t BleStartScanEx(
47         int32_t scannerId, const BleScanConfigs *configs, const BleScanNativeFilter *filter, uint32_t filterSize) = 0;
48     virtual int32_t BleStopScan(int32_t scannerId) = 0;
49     virtual int32_t BleStartAdvEx(int32_t *advId, const StartAdvRawData rawData, BleAdvParams advParam) = 0;
50     virtual int32_t BleStopAdv(int32_t advId) = 0;
51     virtual int32_t GetAdvHandle(int32_t btAdvId, int32_t *bcHandle) = 0;
52     virtual int32_t EnableSyncDataToLpDevice() = 0;
53     virtual int32_t DisableSyncDataToLpDevice() = 0;
54     virtual int32_t SetLpDeviceAdvParam(
55         int32_t duration, int32_t maxExtAdvEvents, int32_t window, int32_t interval, int32_t bcHandle) = 0;
56 
57     // GATT Client相关
58     virtual int32_t BleGattcRegister(BtUuid appUuid) = 0;
59     virtual int32_t BleGattcConnect(int32_t clientId, BtGattClientCallbacks *func, const BdAddr *bdAddr,
60         bool isAutoConnect, BtTransportType transport) = 0;
61     virtual int32_t BleGattcDisconnect(int32_t clientId) = 0;
62     virtual int32_t BleGattcSearchServices(int32_t clientId) = 0;
63     virtual bool BleGattcGetService(int32_t clientId, BtUuid serviceUuid) = 0;
64     virtual int32_t BleGattcRegisterNotification(
65         int32_t clientId, BtGattCharacteristic characteristic, bool enable) = 0;
66     virtual int32_t BleGattcConfigureMtuSize(int32_t clientId, int32_t mtuSize) = 0;
67     virtual int32_t BleGattcWriteCharacteristic(int32_t clientId, BtGattCharacteristic characteristic,
68         BtGattWriteType writeType, int32_t len, const char *value) = 0;
69     virtual int32_t BleGattcUnRegister(int32_t clientId) = 0;
70     virtual int32_t BleGattcSetFastestConn(int32_t clientId, bool fastestConnFlag) = 0;
71     virtual int32_t BleGattcSetPriority(int32_t clientId, const BdAddr *bdAddr, BtGattPriority priority) = 0;
72 
73     // GATT Server相关
74     virtual int32_t BleGattsRegisterCallbacks(BtGattServerCallbacks *func) = 0;
75     virtual int32_t BleGattsRegister(BtUuid appUuid);
76     virtual int32_t BleGattsAddService(int32_t serverId, BtUuid srvcUuid, bool isPrimary, int32_t number) = 0;
77     virtual int32_t BleGattsUnRegister(int32_t serverId);
78     virtual int32_t BleGattsAddCharacteristic(
79         int32_t serverId, int32_t srvcHandle, BtUuid characUuid, int32_t properties, int32_t permissions) = 0;
80     virtual int32_t BleGattsAddDescriptor(
81         int32_t serverId, int32_t srvcHandle, BtUuid descUuid, int32_t permissions) = 0;
82     virtual int32_t BleGattsStartService(int32_t serverId, int32_t srvcHandle) = 0;
83     virtual int32_t BleGattsStopService(int32_t serverId, int32_t srvcHandle) = 0;
84     virtual int32_t BleGattsDeleteService(int32_t serverId, int32_t srvcHandle) = 0;
85     virtual int32_t BleGattsDisconnect(int32_t serverId, BdAddr bdAddr, int32_t connId) = 0;
86     virtual int32_t BleGattsSendResponse(int32_t serverId, GattsSendRspParam *param) = 0;
87     virtual int32_t BleGattsSendIndication(int32_t serverId, GattsSendIndParam *param) = 0;
88     virtual int BleChangeScanParams(int32_t scannerId, const BleScanConfigs *config, const BleScanNativeFilter *filter,
89     uint32_t filterSize, uint32_t filterAction) = 0;
90     virtual int32_t RegisterBroadcastMediumFunction(
91         SoftbusMediumType type, const SoftbusBroadcastMediumInterface *interface) = 0;
92     virtual int32_t SoftBusAddBtStateListener(const SoftBusBtStateListener *listener, int32_t *listenerId) = 0;
93 };
94 
95 class MockBluetooth : public BluetoothInterface {
96 public:
97     MockBluetooth();
98     ~MockBluetooth();
99 
100     MOCK_METHOD(bool, EnableBle, (), (override));
101     MOCK_METHOD(bool, DisableBle, (), (override));
102     MOCK_METHOD(bool, IsBleEnabled, (), (override));
103     MOCK_METHOD(bool, IsLpDeviceAvailable, (), (override));
104     MOCK_METHOD(bool, GetLocalAddr, (unsigned char *mac, unsigned int len), (override));
105     MOCK_METHOD(bool, SetLocalName, (unsigned char *localName, unsigned char length), (override));
106     MOCK_METHOD(int32_t, GapRegisterCallbacks, (BtGapCallBacks * func), (override));
107     MOCK_METHOD(bool, PairRequestReply, (const BdAddr *bdAddr, int32_t transport, bool accept), (override));
108     MOCK_METHOD(
109         bool, SetDevicePairingConfirmation, (const BdAddr *bdAddr, int32_t transport, bool accept), (override));
110 
111     MOCK_METHOD(int32_t, BleGattRegisterCallbacks, (BtGattCallbacks * func), (override));
112     MOCK_METHOD(int32_t, BleRegisterScanCallbacks, (BleScanCallbacks * func, int32_t *scannerId), (override));
113     MOCK_METHOD(int32_t, BleDeregisterScanCallbacks, (int32_t scannerId), (override));
114     MOCK_METHOD(int32_t, BleStartScanEx,
115         (int32_t scannerId, const BleScanConfigs *configs, const BleScanNativeFilter *filter, uint32_t filterSize),
116         (override));
117     MOCK_METHOD(int32_t, BleStopScan, (int32_t scannerId), (override));
118     MOCK_METHOD(int, BleChangeScanParams, (int32_t scannerId, const BleScanConfigs *config,
119     const BleScanNativeFilter *filter, uint32_t filterSize, uint32_t filterAction), (override));
120     MOCK_METHOD(
121         int32_t, BleStartAdvEx, (int32_t * advId, const StartAdvRawData rawData, BleAdvParams advParam), (override));
122     MOCK_METHOD(int32_t, BleStopAdv, (int32_t advId), (override));
123     MOCK_METHOD(int32_t, GetAdvHandle, (int32_t btAdvId, int32_t *bcHandle), (override));
124     MOCK_METHOD(int32_t, EnableSyncDataToLpDevice, (), (override));
125     MOCK_METHOD(int32_t, DisableSyncDataToLpDevice, (), (override));
126     MOCK_METHOD(int32_t, SetLpDeviceAdvParam,
127         (int32_t duration, int32_t maxExtAdvEvents, int32_t window, int32_t interval, int32_t bcHandle), (override));
128 
129     MOCK_METHOD(int32_t, BleGattcRegister, (BtUuid appUuid), (override));
130     MOCK_METHOD(int32_t, BleGattcConnect,
131         (int32_t clientId, BtGattClientCallbacks *func, const BdAddr *bdAddr, bool isAutoConnect,
132             BtTransportType transport),
133         (override));
134     MOCK_METHOD(int32_t, BleGattcDisconnect, (int32_t clientId), (override));
135     MOCK_METHOD(int32_t, BleGattcSearchServices, (int32_t clientId), (override));
136     MOCK_METHOD(bool, BleGattcGetService, (int32_t clientId, BtUuid serviceUuid), (override));
137     MOCK_METHOD(int32_t, BleGattcRegisterNotification,
138         (int32_t clientId, BtGattCharacteristic characteristic, bool enable), (override));
139     MOCK_METHOD(int32_t, BleGattcConfigureMtuSize, (int32_t clientId, int32_t mtuSize), (override));
140     MOCK_METHOD(int32_t, BleGattcWriteCharacteristic,
141         (int32_t clientId, BtGattCharacteristic characteristic, BtGattWriteType writeType, int32_t len,
142             const char *value),
143         (override));
144     MOCK_METHOD(int32_t, BleGattcUnRegister, (int32_t clientId), (override));
145     MOCK_METHOD(int32_t, BleGattcSetFastestConn, (int32_t clientId, bool fastestConnFlag), (override));
146     MOCK_METHOD(
147         int32_t, BleGattcSetPriority, (int32_t clientId, const BdAddr *bdAddr, BtGattPriority priority), (override));
148 
149     MOCK_METHOD(int32_t, BleGattsRegisterCallbacks, (BtGattServerCallbacks * func), (override));
150     MOCK_METHOD(int32_t, BleGattsRegister, (BtUuid appUuid), (override));
151     MOCK_METHOD(
152         int32_t, BleGattsAddService, (int32_t serverId, BtUuid srvcUuid, bool isPrimary, int32_t number), (override));
153     MOCK_METHOD(int32_t, BleGattsUnRegister, (int32_t serverId), (override));
154     MOCK_METHOD(int32_t, BleGattsAddCharacteristic,
155         (int32_t serverId, int32_t srvcHandle, BtUuid characUuid, int32_t properties, int32_t permissions),
156         (override));
157 
158     MOCK_METHOD(int32_t, BleGattsAddDescriptor,
159         (int32_t serverId, int32_t srvcHandle, BtUuid descUuid, int32_t permissions), (override));
160     MOCK_METHOD(int32_t, BleGattsStartService, (int32_t serverId, int32_t srvcHandle), (override));
161     MOCK_METHOD(int32_t, BleGattsStopService, (int32_t serverId, int32_t srvcHandle), (override));
162     MOCK_METHOD(int32_t, BleGattsDeleteService, (int32_t serverId, int32_t srvcHandle), (override));
163     MOCK_METHOD(int32_t, BleGattsDisconnect, (int32_t serverId, BdAddr bdAddr, int32_t connId), (override));
164     MOCK_METHOD(int32_t, BleGattsSendResponse, (int32_t serverId, GattsSendRspParam *param), (override));
165     MOCK_METHOD(int32_t, BleGattsSendIndication, (int32_t serverId, GattsSendIndParam *param), (override));
166     MOCK_METHOD(int32_t, RegisterBroadcastMediumFunction,
167         (SoftbusMediumType type, const SoftbusBroadcastMediumInterface *interface), (override));
168     MOCK_METHOD(int32_t, SoftBusAddBtStateListener,
169         (const SoftBusBtStateListener *listener, int32_t *listenerId), (override));
170     static MockBluetooth *GetMocker();
171 
172     static BtGapCallBacks *btGapCallback;
173     static BtGattCallbacks *btGattCallback;
174     static BleScanCallbacks *bleScanCallback;
175     static const SoftbusBroadcastMediumInterface *interface;
176 
177 private:
178     static MockBluetooth *targetMocker;
179 };
180 
181 #endif
182