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