1 /*
2  * Copyright 2020 HIMSA II K/S - www.himsa.com. Represented by EHIMA -
3  * 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_eatt.h"
19 
20 MockEattExtension* mock_pimpl_;
GetInstance()21 MockEattExtension* MockEattExtension::GetInstance() {
22   bluetooth::eatt::EattExtension::GetInstance();
23   return mock_pimpl_;
24 }
25 
26 namespace bluetooth {
27 namespace eatt {
28 
29 struct EattExtension::impl : public MockEattExtension {
30   impl() = default;
31   ~impl() = default;
IsRunningbluetooth::eatt::EattExtension::impl32   bool IsRunning() { return mock_pimpl_ ? true : false; }
33 };
34 
AddFromStorage(const RawAddress & bd_addr)35 void EattExtension::AddFromStorage(const RawAddress& bd_addr) {}
36 
EattExtension()37 EattExtension::EattExtension() : pimpl_(std::make_unique<impl>()) {}
38 
IsEattSupportedByPeer(const RawAddress & bd_addr)39 bool EattExtension::IsEattSupportedByPeer(const RawAddress& bd_addr) {
40   return pimpl_->IsEattSupportedByPeer(bd_addr);
41 }
42 
Connect(const RawAddress & bd_addr)43 void EattExtension::Connect(const RawAddress& bd_addr) {
44   pimpl_->Connect(bd_addr);
45 }
46 
Disconnect(const RawAddress & bd_addr)47 void EattExtension::Disconnect(const RawAddress& bd_addr) {
48   pimpl_->Disconnect(bd_addr);
49 }
50 
Reconfigure(const RawAddress & bd_addr,uint16_t cid,uint16_t mtu)51 void EattExtension::Reconfigure(const RawAddress& bd_addr, uint16_t cid,
52                                 uint16_t mtu) {
53   pimpl_->Reconfigure(bd_addr, cid, mtu);
54 }
ReconfigureAll(const RawAddress & bd_addr,uint16_t mtu)55 void EattExtension::ReconfigureAll(const RawAddress& bd_addr, uint16_t mtu) {
56   pimpl_->ReconfigureAll(bd_addr, mtu);
57 }
58 
FindEattChannelByCid(const RawAddress & bd_addr,uint16_t cid)59 EattChannel* EattExtension::FindEattChannelByCid(const RawAddress& bd_addr,
60                                                  uint16_t cid) {
61   return pimpl_->FindEattChannelByCid(bd_addr, cid);
62 }
63 
FindEattChannelByTransId(const RawAddress & bd_addr,uint32_t trans_id)64 EattChannel* EattExtension::FindEattChannelByTransId(const RawAddress& bd_addr,
65                                                      uint32_t trans_id) {
66   return pimpl_->FindEattChannelByTransId(bd_addr, trans_id);
67 }
68 
IsIndicationPending(const RawAddress & bd_addr,uint16_t indication_handle)69 bool EattExtension::IsIndicationPending(const RawAddress& bd_addr,
70                                         uint16_t indication_handle) {
71   return pimpl_->IsIndicationPending(bd_addr, indication_handle);
72 }
73 
GetChannelAvailableForIndication(const RawAddress & bd_addr)74 EattChannel* EattExtension::GetChannelAvailableForIndication(
75     const RawAddress& bd_addr) {
76   return pimpl_->GetChannelAvailableForIndication(bd_addr);
77 }
78 
FreeGattResources(const RawAddress & bd_addr)79 void EattExtension::FreeGattResources(const RawAddress& bd_addr) {
80   pimpl_->FreeGattResources(bd_addr);
81 }
82 
IsOutstandingMsgInSendQueue(const RawAddress & bd_addr)83 bool EattExtension::IsOutstandingMsgInSendQueue(const RawAddress& bd_addr) {
84   return pimpl_->IsOutstandingMsgInSendQueue(bd_addr);
85 }
86 
GetChannelWithQueuedData(const RawAddress & bd_addr)87 EattChannel* EattExtension::GetChannelWithQueuedData(
88     const RawAddress& bd_addr) {
89   return pimpl_->GetChannelWithQueuedData(bd_addr);
90 }
91 
GetChannelAvailableForClientRequest(const RawAddress & bd_addr)92 EattChannel* EattExtension::GetChannelAvailableForClientRequest(
93     const RawAddress& bd_addr) {
94   return pimpl_->GetChannelAvailableForClientRequest(bd_addr);
95 }
96 
97 /* Start stop GATT indication timer per CID */
StartIndicationConfirmationTimer(const RawAddress & bd_addr,uint16_t cid)98 void EattExtension::StartIndicationConfirmationTimer(const RawAddress& bd_addr,
99                                                      uint16_t cid) {
100   pimpl_->StartIndicationConfirmationTimer(bd_addr, cid);
101 }
102 
StopIndicationConfirmationTimer(const RawAddress & bd_addr,uint16_t cid)103 void EattExtension::StopIndicationConfirmationTimer(const RawAddress& bd_addr,
104                                                     uint16_t cid) {
105   pimpl_->StopIndicationConfirmationTimer(bd_addr, cid);
106 }
107 
108 /* Start stop application indication timeout */
StartAppIndicationTimer(const RawAddress & bd_addr,uint16_t cid)109 void EattExtension::StartAppIndicationTimer(const RawAddress& bd_addr,
110                                             uint16_t cid) {
111   pimpl_->StartAppIndicationTimer(bd_addr, cid);
112 }
113 
StopAppIndicationTimer(const RawAddress & bd_addr,uint16_t cid)114 void EattExtension::StopAppIndicationTimer(const RawAddress& bd_addr,
115                                            uint16_t cid) {
116   pimpl_->StopAppIndicationTimer(bd_addr, cid);
117 }
118 
Start()119 void EattExtension::Start() {
120   // It is needed here as IsoManager which is a singleton creates it, but in
121   // this mock we want to destroy and recreate the mock on each test case.
122   if (!pimpl_) {
123     pimpl_ = std::make_unique<impl>();
124   }
125 
126   mock_pimpl_ = pimpl_.get();
127   pimpl_->Start();
128 }
129 
Stop()130 void EattExtension::Stop() {
131   // It is needed here as IsoManager which is a singleton creates it, but in
132   // this mock we want to destroy and recreate the mock on each test case.
133   if (pimpl_) {
134     pimpl_->Stop();
135     pimpl_.reset();
136   }
137 
138   mock_pimpl_ = nullptr;
139 }
140 
141 EattExtension::~EattExtension() = default;
142 }  // namespace eatt
143 }  // namespace bluetooth
144