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