1 /* 2 * Copyright 2020 HIMSA II K/S - www.himsa.com. 3 * Represented by EHIMA - www.ehima.com 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 #pragma once 18 19 #include <base/functional/callback.h> 20 #include <gmock/gmock.h> 21 22 #include <vector> 23 24 #include "btm_iso_api_types.h" 25 26 namespace hcic { 27 class HcicInterface { 28 public: 29 // iso_manager::cig_create_params is a workaround for the 10 params function 30 // limitation that gmock sets 31 virtual void SetCigParams(uint8_t cig_id, 32 struct bluetooth::hci::iso_manager::cig_create_params cig_params, 33 base::OnceCallback<void(uint8_t*, uint16_t)> cb) = 0; 34 35 virtual void RemoveCig(uint8_t cig_id, base::OnceCallback<void(uint8_t*, uint16_t)> cb) = 0; 36 37 virtual void CreateCis(uint8_t num_cis, const EXT_CIS_CREATE_CFG* cis_create_cfg, 38 base::OnceCallback<void(uint8_t*, uint16_t)> cb) = 0; 39 40 virtual void Disconnect(uint16_t handle, uint8_t reason) = 0; 41 42 virtual void SetupIsoDataPath(uint16_t iso_handle, uint8_t data_path_dir, uint8_t data_path_id, 43 uint8_t codec_id_format, uint16_t codec_id_company, 44 uint16_t codec_id_vendor, uint32_t controller_delay, 45 std::vector<uint8_t> codec_conf, 46 base::OnceCallback<void(uint8_t*, uint16_t)> cb) = 0; 47 48 virtual void RemoveIsoDataPath(uint16_t iso_handle, uint8_t data_path_dir, 49 base::OnceCallback<void(uint8_t*, uint16_t)> cb) = 0; 50 51 virtual void ReadIsoLinkQuality(uint16_t iso_handle, 52 base::OnceCallback<void(uint8_t*, uint16_t)> cb) = 0; 53 54 // iso_manager::big_create_params is a workaround for the 10 params function 55 // limitation that gmock sets 56 virtual void CreateBig(uint8_t big_handle, 57 struct bluetooth::hci::iso_manager::big_create_params big_params) = 0; 58 59 virtual void TerminateBig(uint8_t big_handle, uint8_t reason) = 0; 60 61 virtual ~HcicInterface() = default; 62 }; 63 64 class MockHcicInterface : public HcicInterface { 65 public: 66 MOCK_METHOD((void), SetCigParams, 67 (uint8_t cig_id, struct bluetooth::hci::iso_manager::cig_create_params cig_params, 68 base::OnceCallback<void(uint8_t*, uint16_t)> cb), 69 (override)); 70 71 MOCK_METHOD((void), RemoveCig, (uint8_t cig_id, base::OnceCallback<void(uint8_t*, uint16_t)> cb), 72 (override)); 73 74 MOCK_METHOD((void), CreateCis, 75 (uint8_t num_cis, const EXT_CIS_CREATE_CFG* cis_create_cfg, 76 base::OnceCallback<void(uint8_t*, uint16_t)> cb), 77 (override)); 78 79 MOCK_METHOD((void), Disconnect, (uint16_t handle, uint8_t reason), (override)); 80 81 MOCK_METHOD((void), SetupIsoDataPath, 82 (uint16_t iso_handle, uint8_t data_path_dir, uint8_t data_path_id, 83 uint8_t codec_id_format, uint16_t codec_id_company, uint16_t codec_id_vendor, 84 uint32_t controller_delay, std::vector<uint8_t> codec_conf, 85 base::OnceCallback<void(uint8_t*, uint16_t)> cb), 86 (override)); 87 88 MOCK_METHOD((void), RemoveIsoDataPath, 89 (uint16_t iso_handle, uint8_t data_path_dir, 90 base::OnceCallback<void(uint8_t*, uint16_t)> cb), 91 (override)); 92 93 MOCK_METHOD((void), ReadIsoLinkQuality, 94 (uint16_t iso_handle, base::OnceCallback<void(uint8_t*, uint16_t)> cb), (override)); 95 96 MOCK_METHOD((void), CreateBig, 97 (uint8_t big_handle, 98 struct bluetooth::hci::iso_manager::big_create_params big_params), 99 (override)); 100 101 MOCK_METHOD((void), TerminateBig, (uint8_t big_handle, uint8_t reason), (override)); 102 }; 103 104 void SetMockHcicInterface(MockHcicInterface* mock_hcic_interface); 105 106 } // namespace hcic 107