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