• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
18 #include "mock_stack_btm_iso.h"
19 
20 namespace {
21 MockIsoManager* mock_pimpl_;
22 }
23 
GetInstance()24 MockIsoManager* MockIsoManager::GetInstance() {
25   bluetooth::hci::IsoManager::GetInstance();
26   return mock_pimpl_;
27 }
28 
29 namespace bluetooth {
30 namespace hci {
31 
32 struct IsoManager::impl : public MockIsoManager {
33  public:
34   impl() = default;
35   ~impl() = default;
36 };
37 
IsoManager()38 IsoManager::IsoManager() {}
39 
RegisterCigCallbacks(iso_manager::CigCallbacks * callbacks) const40 void IsoManager::RegisterCigCallbacks(
41     iso_manager::CigCallbacks* callbacks) const {
42   if (!pimpl_) return;
43   pimpl_->RegisterCigCallbacks(callbacks);
44 }
45 
RegisterBigCallbacks(iso_manager::BigCallbacks * callbacks) const46 void IsoManager::RegisterBigCallbacks(
47     iso_manager::BigCallbacks* callbacks) const {
48   if (!pimpl_) return;
49   pimpl_->RegisterBigCallbacks(callbacks);
50 }
51 
RegisterOnIsoTrafficActiveCallback(void callback (bool)) const52 void IsoManager::RegisterOnIsoTrafficActiveCallback(void callback(bool)) const {
53   if (!pimpl_) return;
54   pimpl_->RegisterOnIsoTrafficActiveCallbacks(callback);
55 }
56 
CreateCig(uint8_t cig_id,struct iso_manager::cig_create_params cig_params)57 void IsoManager::CreateCig(uint8_t cig_id,
58                            struct iso_manager::cig_create_params cig_params) {
59   if (!pimpl_) return;
60   pimpl_->CreateCig(cig_id, std::move(cig_params));
61 }
62 
ReconfigureCig(uint8_t cig_id,struct iso_manager::cig_create_params cig_params)63 void IsoManager::ReconfigureCig(
64     uint8_t cig_id, struct iso_manager::cig_create_params cig_params) {
65   if (!pimpl_) return;
66   pimpl_->ReconfigureCig(cig_id, std::move(cig_params));
67 }
68 
RemoveCig(uint8_t cig_id,bool force)69 void IsoManager::RemoveCig(uint8_t cig_id, bool force) {
70   pimpl_->RemoveCig(cig_id, force);
71 }
72 
EstablishCis(struct iso_manager::cis_establish_params conn_params)73 void IsoManager::EstablishCis(
74     struct iso_manager::cis_establish_params conn_params) {
75   if (!pimpl_) return;
76   pimpl_->EstablishCis(std::move(conn_params));
77 }
78 
DisconnectCis(uint16_t cis_handle,uint8_t reason)79 void IsoManager::DisconnectCis(uint16_t cis_handle, uint8_t reason) {
80   if (!pimpl_) return;
81   pimpl_->DisconnectCis(cis_handle, reason);
82 }
83 
SetupIsoDataPath(uint16_t iso_handle,struct iso_manager::iso_data_path_params path_params)84 void IsoManager::SetupIsoDataPath(
85     uint16_t iso_handle, struct iso_manager::iso_data_path_params path_params) {
86   if (!pimpl_) return;
87   pimpl_->SetupIsoDataPath(iso_handle, std::move(path_params));
88 }
89 
RemoveIsoDataPath(uint16_t iso_handle,uint8_t data_path_dir)90 void IsoManager::RemoveIsoDataPath(uint16_t iso_handle, uint8_t data_path_dir) {
91   if (!pimpl_) return;
92   pimpl_->RemoveIsoDataPath(iso_handle, data_path_dir);
93 }
94 
ReadIsoLinkQuality(uint16_t iso_handle)95 void IsoManager::ReadIsoLinkQuality(uint16_t iso_handle) {
96   if (!pimpl_) return;
97   pimpl_->ReadIsoLinkQuality(iso_handle);
98 }
99 
SendIsoData(uint16_t iso_handle,const uint8_t * data,uint16_t data_len)100 void IsoManager::SendIsoData(uint16_t iso_handle, const uint8_t* data,
101                              uint16_t data_len) {
102   if (!pimpl_) return;
103   pimpl_->SendIsoData(iso_handle, data, data_len);
104 }
105 
CreateBig(uint8_t big_id,struct iso_manager::big_create_params big_params)106 void IsoManager::CreateBig(uint8_t big_id,
107                            struct iso_manager::big_create_params big_params) {
108   if (!pimpl_) return;
109   pimpl_->CreateBig(big_id, std::move(big_params));
110 }
111 
TerminateBig(uint8_t big_id,uint8_t reason)112 void IsoManager::TerminateBig(uint8_t big_id, uint8_t reason) {
113   if (!pimpl_) return;
114   pimpl_->TerminateBig(big_id, reason);
115 }
116 
HandleIsoData(void * p_msg)117 void IsoManager::HandleIsoData(void* p_msg) {
118   if (!pimpl_) return;
119   pimpl_->HandleIsoData(static_cast<BT_HDR*>(p_msg));
120 }
121 
HandleDisconnect(uint16_t handle,uint8_t reason)122 void IsoManager::HandleDisconnect(uint16_t handle, uint8_t reason) {
123   if (!pimpl_) return;
124   pimpl_->HandleDisconnect(handle, reason);
125 }
126 
HandleNumComplDataPkts(uint16_t handle,uint16_t credits)127 void IsoManager::HandleNumComplDataPkts(uint16_t handle, uint16_t credits) {
128   if (!pimpl_) return;
129   pimpl_->HandleNumComplDataPkts(handle, credits);
130 }
131 
HandleHciEvent(uint8_t sub_code,uint8_t * params,uint16_t length)132 void IsoManager::HandleHciEvent(uint8_t sub_code, uint8_t* params,
133                                 uint16_t length) {
134   if (!pimpl_) return;
135   pimpl_->HandleHciEvent(sub_code, params, length);
136 }
137 
Start()138 void IsoManager::Start() {
139   // It is needed here as IsoManager which is a singleton creates it, but in
140   // this mock we want to destroy and recreate the mock on each test case.
141   if (!pimpl_) {
142     pimpl_ = std::make_unique<testing::NiceMock<impl>>();
143   }
144 
145   mock_pimpl_ = pimpl_.get();
146   pimpl_->Start();
147 }
148 
Stop()149 void IsoManager::Stop() {
150   // It is needed here as IsoManager which is a singleton creates it, but in
151   // this mock we want to destroy and recreate the mock on each test case.
152   if (pimpl_) {
153     pimpl_->Stop();
154     pimpl_.reset();
155   }
156 
157   mock_pimpl_ = nullptr;
158 }
159 
Dump(int)160 void IsoManager::Dump(int /* fd */) {}
161 
162 IsoManager::~IsoManager() = default;
163 
GetInstance()164 IsoManager* IsoManager::GetInstance() {
165   static IsoManager* instance = new IsoManager();
166   return instance;
167 }
168 
169 }  // namespace hci
170 }  // namespace bluetooth
171