1 /* 2 * Copyright (c) 2022 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 26 #include "softbus_adapter_bt_common.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 GetLocalAddr(unsigned char *mac, unsigned int len) = 0; 36 virtual bool SetLocalName(unsigned char *localName, unsigned char length) = 0; 37 virtual int GapRegisterCallbacks(BtGapCallBacks *func) = 0; 38 virtual bool PairRequestReply(const BdAddr *bdAddr, int transport, bool accept) = 0; 39 virtual bool SetDevicePairingConfirmation(const BdAddr *bdAddr, int transport, bool accept) = 0; 40 41 // BLE广播相关 42 virtual int BleGattRegisterCallbacks(BtGattCallbacks *func) = 0; 43 virtual int BleStartScanEx(int scannerId, BleScanConfigs *configs, BleScanNativeFilter *filter, 44 unsigned int filterSize) = 0; 45 virtual int BleStopScan(int scannerId) = 0; 46 virtual int BleStartAdvEx(int *advId, const StartAdvRawData rawData, BleAdvParams advParam) = 0; 47 virtual int BleStopAdv(int advId) = 0; 48 49 // GATT Client相关 50 virtual int BleGattcRegister(BtUuid appUuid) = 0; 51 virtual int BleGattcConnect(int clientId, BtGattClientCallbacks *func, const BdAddr *bdAddr, bool isAutoConnect, 52 BtTransportType transport) = 0; 53 virtual int BleGattcDisconnect(int clientId) = 0; 54 virtual int BleGattcSearchServices(int clientId) = 0; 55 virtual bool BleGattcGetService(int clientId, BtUuid serviceUuid) = 0; 56 virtual int BleGattcRegisterNotification(int clientId, BtGattCharacteristic characteristic, bool enable) = 0; 57 virtual int BleGattcConfigureMtuSize(int clientId, int mtuSize) = 0; 58 virtual int BleGattcWriteCharacteristic( 59 int clientId, BtGattCharacteristic characteristic, BtGattWriteType writeType, int len, const char *value) = 0; 60 virtual int BleGattcUnRegister(int clientId) = 0; 61 virtual int BleGattcSetFastestConn(int clientId, bool fastestConnFlag) = 0; 62 virtual int BleGattcSetPriority(int clientId, const BdAddr *bdAddr, BtGattPriority priority) = 0; 63 64 // GATT Server相关 65 virtual int BleGattsRegisterCallbacks(BtGattServerCallbacks *func) = 0; 66 virtual int BleGattsRegister(BtUuid appUuid); 67 virtual int BleGattsAddService(int serverId, BtUuid srvcUuid, bool isPrimary, int number) = 0; 68 virtual int BleGattsUnRegister(int serverId); 69 virtual int BleGattsAddCharacteristic( 70 int serverId, int srvcHandle, BtUuid characUuid, int properties, int permissions) = 0; 71 virtual int BleGattsAddDescriptor(int serverId, int srvcHandle, BtUuid descUuid, int permissions) = 0; 72 virtual int BleGattsStartService(int serverId, int srvcHandle) = 0; 73 virtual int BleGattsStopService(int serverId, int srvcHandle) = 0; 74 virtual int BleGattsDeleteService(int serverId, int srvcHandle) = 0; 75 virtual int BleGattsDisconnect(int serverId, BdAddr bdAddr, int connId) = 0; 76 virtual int BleGattsSendResponse(int serverId, GattsSendRspParam *param) = 0; 77 virtual int BleGattsSendIndication(int serverId, GattsSendIndParam *param) = 0; 78 }; 79 80 class MockBluetooth : public BluetoothInterface { 81 public: 82 MockBluetooth(); 83 ~MockBluetooth(); 84 85 MOCK_METHOD(bool, EnableBle, (), (override)); 86 MOCK_METHOD(bool, DisableBle, (), (override)); 87 MOCK_METHOD(bool, IsBleEnabled, (), (override)); 88 MOCK_METHOD(bool, GetLocalAddr, (unsigned char *mac, unsigned int len), (override)); 89 MOCK_METHOD(bool, SetLocalName, (unsigned char *localName, unsigned char length), (override)); 90 MOCK_METHOD(int, GapRegisterCallbacks, (BtGapCallBacks *func), (override)); 91 MOCK_METHOD(bool, PairRequestReply, (const BdAddr *bdAddr, int transport, bool accept), (override)); 92 MOCK_METHOD(bool, SetDevicePairingConfirmation, (const BdAddr *bdAddr, int transport, bool accept), (override)); 93 94 MOCK_METHOD(int, BleGattRegisterCallbacks, (BtGattCallbacks *func), (override)); 95 MOCK_METHOD(int, BleStartScanEx, 96 (int scannerId, BleScanConfigs * configs, BleScanNativeFilter *filter, unsigned int filterSize), (override)); 97 MOCK_METHOD(int, BleStopScan, (int scannerId), (override)); 98 MOCK_METHOD(int, BleStartAdvEx, (int *advId, const StartAdvRawData rawData, BleAdvParams advParam), (override)); 99 MOCK_METHOD(int, BleStopAdv, (int advId), (override)); 100 101 MOCK_METHOD(int, BleGattcRegister, (BtUuid appUuid), (override)); 102 MOCK_METHOD(int, BleGattcConnect, 103 (int clientId, BtGattClientCallbacks *func, const BdAddr *bdAddr, bool isAutoConnect, 104 BtTransportType transport), 105 (override)); 106 MOCK_METHOD(int, BleGattcDisconnect, (int clientId), (override)); 107 MOCK_METHOD(int, BleGattcSearchServices, (int clientId), (override)); 108 MOCK_METHOD(bool, BleGattcGetService, (int clientId, BtUuid serviceUuid), (override)); 109 MOCK_METHOD(int, BleGattcRegisterNotification, (int clientId, BtGattCharacteristic characteristic, bool enable), 110 (override)); 111 MOCK_METHOD(int, BleGattcConfigureMtuSize, (int clientId, int mtuSize), (override)); 112 MOCK_METHOD(int, BleGattcWriteCharacteristic, 113 (int clientId, BtGattCharacteristic characteristic, BtGattWriteType writeType, int len, const char *value), 114 (override)); 115 MOCK_METHOD(int, BleGattcUnRegister, (int clientId), (override)); 116 MOCK_METHOD(int, BleGattcSetFastestConn, (int clientId, bool fastestConnFlag), (override)); 117 MOCK_METHOD(int, BleGattcSetPriority, (int clientId, const BdAddr *bdAddr, BtGattPriority priority), (override)); 118 119 MOCK_METHOD(int, BleGattsRegisterCallbacks, (BtGattServerCallbacks *func), (override)); 120 MOCK_METHOD(int, BleGattsRegister, (BtUuid appUuid), (override)); 121 MOCK_METHOD(int, BleGattsAddService, (int serverId, BtUuid srvcUuid, bool isPrimary, int number), (override)); 122 MOCK_METHOD(int, BleGattsUnRegister, (int serverId), (override)); 123 MOCK_METHOD(int, BleGattsAddCharacteristic, 124 (int serverId, int srvcHandle, BtUuid characUuid, int properties, int permissions), (override)); 125 MOCK_METHOD( 126 int, BleGattsAddDescriptor, (int serverId, int srvcHandle, BtUuid descUuid, int permissions), (override)); 127 MOCK_METHOD(int, BleGattsStartService, (int serverId, int srvcHandle), (override)); 128 MOCK_METHOD(int, BleGattsStopService, (int serverId, int srvcHandle), (override)); 129 MOCK_METHOD(int, BleGattsDeleteService, (int serverId, int srvcHandle), (override)); 130 MOCK_METHOD(int, BleGattsDisconnect, (int serverId, BdAddr bdAddr, int connId), (override)); 131 MOCK_METHOD(int, BleGattsSendResponse, (int serverId, GattsSendRspParam *param), (override)); 132 MOCK_METHOD(int, BleGattsSendIndication, (int serverId, GattsSendIndParam *param), (override)); 133 134 static MockBluetooth *GetMocker(); 135 136 static BtGapCallBacks *btGapCallback; 137 static BtGattCallbacks *btGattCallback; 138 static BleScanCallbacks *bleScanCallback; 139 140 private: 141 static MockBluetooth *targetMocker; 142 }; 143 144 #endif