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